Ich lade sqs.receiveMessage(receiveParams, function(err, data){})
innerhalb einer Endlosschleife auf. Aber es wurde überhaupt nicht ausgelöst.Kann keine Nachricht von SQS in Endlosschleife empfangen
var receiveParams = {
QueueUrl: queueUrl,
VisibilityTimeout: 40
};
while (true)
{
console.log("before");
setTimeout(function() {
sqs.receiveMessage(receiveParams, function(err,data){
console.log("Calling");
if (err) {
console.log(err);
}
else {
console.log(data);
if (data.Messages != null)
{
console.log("Executing my fuction");
myFunction();
}
}
});
}, 10000);
console.log("after");
}
Wenn ich sqs.receiveMessage()
außerhalb der Schleife ausführen, funktioniert es gut. Ich weiß nicht, warum es in der Schleife nie aufgerufen wird. Ich vermute, dass etwas mit meinen Timeout-Einstellungen nicht stimmt. Weil meine Schleife ohne Zeitverzögerung "davor" und "danach" protokolliert. Irgendeine Hilfe?
Ihre Erklärung ist korrekt, aber eine 'async' Schleife könnte in meinem Fall eine bessere Lösung sein. –
@LingboTang - Froh, dass die Erklärung hilft und schließlich zu einer noch besseren Lösung führt. –