【发布时间】:2015-12-31 09:41:28
【问题描述】:
我正在使用 Gmail API 循环检索邮件并为每封邮件执行 req.write()。每个 api 调用都有一个回调,但是我如何知道整个集合何时完成以便我可以结束响应?我尝试了以下方法,但注意到回调不是按照数组索引的顺序执行的,所以我不能只做我注释掉的那一行。
for (var i = 0; i < messages.length; i++) {
var message = messages[i];
console.log('- %s', message.id);
(function(e){
var request = gmail.users.messages.get({
auth:auth,
id:message.id,
userId: 'me'
}, function(err, response) {
if(err) {
console.log('API returned an error: ' +err);
return;
}
res.write(JSON.stringify(response,null,'\t'));
console.log(e);
//if(e==messages.length-1) res.end();
}
);
})(i);
}
【问题讨论】:
标签: javascript node.js asynchronous scope