繼承人的代碼:async.series函數...這是正確的接近?
var async = require('async');
var GitHubApi = require('github');
var github = new GitHubApi({
version: '3.0.0'
});
var getUserAvatarWithCallback = function(user, callback) {
github.search.users({ q: user }, function(err, res) {
if (err) { callback(err, null); }
else {
var avatarUrl = res.items[0].avatar_url;
callback(null, avatarUrl);
}
});
};
async.series([
function(callback1) {
for(var i = 0, length = 3; i < length; i++) {
getUserAvatarWithCallback('samucich', function(err,avatar) {
if (err) { console.log('Error: ',err) };
console.log('got url from Git',avatar);
});
}
callback1()
},
function(callbackAfterLoop) {
for(var i = 0, length = 10; i < length; i++) {
console.log('loop ',i);
}
callbackAfterLoop()
},
function() {
console.log('Done');
}
]);//async
和輸出:
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
loop 6
loop 7
loop 8
loop 9
Done
got url from Git https://avatars.githubusercontent.com/u/4983338?v=3
got url from Git https://avatars.githubusercontent.com/u/4983338?v=3
got url from Git https://avatars.githubusercontent.com/u/4983338?v=3
如果我理解這個正確的,節點是放調用Git的API在其上的事件堆棧,然後調用我的程序回來當他們完成。所以這就是爲什麼在輸出結果中,我看到異步數組中的第二個和第三個函數的輸出,然後我看到第一個異步函數的輸出... Git api調用需要更多時間...我得到。
我的問題是我怎麼能得到這個等待的API調用Git完成並返回然後移動到異步數組中的第二個函數?是async.series錯誤的接近?
感謝長久......山姆
謝謝Dreamlines ...所以你說不要使用異步模塊?經測試 –
。更新答案。 – Dreamlines
可能更好地增加'count',然後在您增加'count'之後,檢查它的值以查看它是否在終端值。你這樣做的方式很奇怪,並不容易遵循。在閱讀你的代碼時,我的第一個問題是你爲什麼要檢查'count'是否是'2'而不是'3'。那麼,答案是因爲你還沒有增加櫃檯。這是一個等待發生的錯誤。 – jfriend00