Я не знаком с node.js, но я бы предположил, что:
function() {
console.log('The message was sent.');
}
- это функция обратного вызова, которая вызывается после успешной отправки сообщения. И что фактическая отправка сообщения является асинхронной, чтобы не блокировать остальную часть выполнения. Если вы хотите сделать это блокирующим / синхронным процессом, вы можете сделать что-то вроде этого: (обратите внимание, может быть явный способ сделать синхронный вызов в node.js, я просто не знаком с этим):
for(var key in object) {
var completed = false;
sendMessage('Hello!', function() {
console.log('The message was sent.');
completed = true;
});
while(completed == false) {
; // do nothing
}
}
Недостатком вышеупомянутого подхода является то, что вы можете оказаться в бесконечном цикле в операторе while (), если когда-либо возникнет ошибка в sendMessage () или обратном вызове.
Другой подход, который позволил бы вам отправлять все сообщения асинхронно, но затем ждать их завершения, прежде чем двигаться дальше, заключается в том, чтобы сделать что-то вроде:
var count = 0;
for(var key in object) {
count++;
sendMessage('Hello!', function() {
console.log('The message was sent.');
count--;
});
}
while(count > 0){
; // wait until all have finished
}
Это будет иметь ту же проблему бесконечного цикла, если когда-либо возникнет ошибка, которая не позволит счетчику снова достичь 0.