HERESにコード: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への呼び出しを入れて、再び私のプログラムを呼び出しています彼らの完了時。だから、出力では、非同期配列の2番目と3番目の関数の出力を見る前に、1番目の非同期関数の出力を見る前にGit api呼び出しに時間がかかります。 。
私の質問は、これを完了して戻って、非同期配列の2番目の関数に移動するには、GitのAPI呼び出しを待つためにこれを得ることができますか? async.series間違ったapprochですか?
async.seriesは、特定のコールバックを待っているシリーズで、各機能を実行します表示されます:私はパッケージとあなたのコードをテストし、うまくいけば、これは今便利ですmuchly ...サム
Dreamlinesがあります...非同期モジュールをまったく使用しないと言っていますか? –
が試験された。回答を更新する。 – Dreamlines
'count'をインクリメントした後、' count'をインクリメントした後で、その値がターミナル値であるかどうかを確認してください。あなたがやっているやり方はかなり奇妙で、それほど簡単ではありません。あなたのコードを読むときの私の最初の質問は、 'count'が' 3'の代わりに '2'であるかどうかをチェックしている理由です。あなたがまだカウンターを増やしていないからです。それは起こるのを待っているバグです。 – jfriend00