正在使用async.each等待多个异步调用



在恢复执行之前,我需要等待几个异步调用完成。我使用async尝试了以下代码。

asana.getUsers(null, function(error, resp){
async.each(resp.data, function(user, cb) {
console.log("Get info for user : ", user.id);
asana.getUser(user.id, null, function(error, userResp){
console.log("user response: ", userResp.data.id);
userEmailList.push({
id : userResp.data.id,
name: userResp.data.name,
email : userResp.data.email
});
cb(null);
});
//cb(null); Should the call be here??
}, function(err){
console.log("getUsers is done now");
});
});

我得到的日志是:

获取用户信息:xxxxxxxxxxxx获取用户信息:yyyy-yyyy获取用户信息:zzzzzzzzzz获取用户信息:aaaaaaaaaa用户响应:yyyy-yyyy-yyyy/Code/javaScript/NodeWorkspace/asana-api/mail.js:23console.log("用户响应:",userResp.data.id);^TypeError:无法读取null的属性"data"位于/Code/javaScript/NodeWorkspace/asana-api/mail.js:23:43应要求_回调(/Code/javaScript/NodeWorkspace/asana-api/lib/asana.js:77:13)位于Request.self.callback(/Code/javaScript/NodeWorkspace/asana-api/node_modules/Request/main.js:119:22)应要求。(/Code/javaScript/NodeWorkspace/asana-api/nod_modules/request/main.js:525:16)在Request.EventEmitter.emit(events.js:95:17)在IncomingMessage。(/Code/javaScript/NodeWorkspace/asana-api/nod_modules/request/main.js:4484:14)在IncomingMessage.EventEmitter.emit(events.js:117:20)在_stream_readable.js:883:14正在处理中_tickCallback(node.js:451:13)

我理解第一个日志,但为什么console.log("user response: ", userResp.data.id);行被userResp作为null调用。

我希望这不是什么愚蠢的错误。提前谢谢。

p.S:基本上我需要获取Asana用户,然后获取每个用户的信息并存储在varuserEmailList中。

问题是userEmailList未定义。

最新更新