继承人的代码: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