【发布时间】:2015-12-22 11:41:53
【问题描述】:
我敢打赌我有一个常见的问题,但由于我对异步 javascript 还是新手,我不确定我的问题的(最佳)解决方案是什么。
我经历了一个 for 循环,在那个循环中我调用了一个包含回调方法的方法。在回调方法中,我想知道哪个循环是最新的。但是该方法需要一点时间才能继续,并且在它完成一次时,围绕它的 for 循环完成并且计数器变量 i 已经处于最高值。所以我的问题是,如何确定回调方法中的最新循环?
这是它的示例代码。
var i;
for (i = 0; i < numMessages; i++){
var lastMessage;
if (i+1 === numMessages) {
lastMessage = true;
}
else {
lastMessage = false;
}
twilioClient.sendMessage({
to: recipientNumber,
from: zenyaTwilioNumber,
body: (numMessages > 1? (i+1) + '/' + Math.ceil(options.messageBody.length/153) + ': ' + options.messageBody.substring(i*153, (i+1)*153): options.messageBody)
},
function (err, res) {
if (err) {
callback({error: err});
}
else {
console.log('Message:' +i);
console.log('numMessages: ' + numMessages); // Even after method is executed once, the lastMessage variable is already true
if (lastMessage) {
var returnObj = {
status : status,
recipient : res.to,
statusMessage : res.status
};
callback({result: returnObj}); // The callback should only be called once here.
}
}
});
}
期待您的回答并学习如何实现这一目标的最佳实践。
谢谢, 本尼
【问题讨论】:
标签: javascript loops asynchronous