0
我需要等待幾個異步調用完成才能恢復執行。我嘗試使用async以下代碼。使用async.each等待多個異步調用
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");
});
});
我得到的日誌是:
Get info for user : xxxxxxxxxxxx Get info for user : yyyyyyyyyyyy Get info for user : zzzzzzzzzzzz Get info for user : aaaaaaaaaaaa user response: yyyyyyyyyyyy /Code/javaScript/NodeWorkspace/asana-api/mail.js:23 console.log("user response: ", userResp.data.id); ^ TypeError: Cannot read property 'data' of null at /Code/javaScript/NodeWorkspace/asana-api/mail.js:23:43 at Request._callback (/Code/javaScript/NodeWorkspace/asana-api/lib/asana.js:77:13) at Request.self.callback (/Code/javaScript/NodeWorkspace/asana-api/node_modules/request/main.js:119:22) at Request. (/Code/javaScript/NodeWorkspace/asana-api/node_modules/request/main.js:525:16) at Request.EventEmitter.emit (events.js:95:17) at IncomingMessage. (/Code/javaScript/NodeWorkspace/asana-api/node_modules/request/main.js:484:14) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:883:14 at process._tickCallback (node.js:415:13)
我理解第一次登錄,但爲什麼是console.log("user response: ", userResp.data.id);
線獲取調用與userResp
爲null
。
我希望它不是一些愚蠢的錯誤。提前致謝。
P.S:基本上我需要得到Asana用戶,然後獲取每個用戶的信息並存儲在var userEmailList
中。
你檢查了'錯誤'嗎? – thefourtheye
我得到這個錯誤'用戶響應:錯誤[TypeError:無法調用未定義的'推''''' – CodeRain
而不是'userResp.data.id'你能顯示'userResp'使用'檢查(對象) '模塊?你確定它應該是'userResp.data.id'而不是'userResp.id'嗎? – Tom