私はノードjs非同期モジュールを使用しています。私はたくさんの並列関数を実行したいと思います。いずれかの関数がエラーを返す場合、私はメインコールバックをすぐに実行したくありません。どの場合でもメインのコールバックが最後に実行されるようにしたいのですが、エラーを返した配列の配列だけでなく、OKになった配列を取得したいと思います。ロジックを追加しなくても可能ですか?ノードjs async - メインコールバックの即時実行を防ぎます
0
A
答えて
0
その関数のコールバックでエラーを返す代わりに、エラー配列にエラーをプッシュし、ok項目をok配列にプッシュして、すべてのコールバックを第1引数(callback(null))としてコールします機能。このような何か:あなたは並列呼び出しに成功/失敗した機能の両方のためのちょうど1アレイを有する気にしない場合は
var okArray = [];
var errorArray = [];
async.parallel([
function(callback) {
// do something
if (error) {
errorArray.push(errorItem);
} else {
okArray.push(okItem);
}
callback(null);
},
function(callback) {
// do something
if (error) {
errorArray.push(errorItem);
} else {
okArray.push(okItem);
}
callback(null);
}
], function(err) {
console.log(okArray);
console.log(errorArray);
});
、平行配列にリストされているために、機能ごとに結果の配列を返すん。たとえば、
async.parallel([
function(callback) {
// do something
if (error) {
return callback(null, errorItem);
}
callback(null, okItem);
},
function(callback) {
// do something
if (error) {
return callback(null, errorItem);
}
callback(null, okItem);
}
], function(err, results) {
console.log(results); // results[0] = what 1st function returns
// results[1] = what 2nd function returns
});
0
Javascript Promiseオブジェクトを調べてみてください。
すべての並列関数が約束オブジェクトを返すようにして、それらをすべて配列に貼り付けます。 次に、Promise.all([約束])を実行します(コールバック)。 関数が例外をスローしない限り、そのコールバックはすべての関数が実行された後にのみ呼び出されることを保証することができます。
関連する問題
- 1. DDL文で即時実行
- 2. Java PL/SQL '即時実行'
- 3. PL/SQL DDL即時実行
- 4. Oracle 11gで即時実行
- 5. 繰延LINQ(?または即時)実行
- 6. JSの即時検証
- 7. Java synchronizedキーワード - クラスメソッドが同時に実行されるのを防ぎますか?
- 8. 即時ループPL/SQLを実行
- 9. 複数のSQL文で即時実行
- 10. Androidスタジオ2.2即時実行エラーのグラデーションプラグ
- 11. ノードJS(Meteor JS)でJavaクラスを実行
- 12. 切断時にスクリプトを実行する方法(ノードjs)
- 13. ノードjsリンクコマンド実行エラー
- 14. 防ぎアンカー行動
- 15. ノードJS早すぎるプログラムの終了
- 16. 即時送信ボタンのクリックを防止しますか?
- 17. マウスクリック時の入力ボケを防ぎます
- 18. JS即時関数のexecシーケンス
- 19. 「IDの即時実行」の実行時に、スプリングがロールバックされない
- 20. ノードjsサーバー上のWebサイトの実行
- 21. InternalErrorを防ぎます:再帰が多すぎます
- 22. ノードjsでcytospace.js 'cose'レイアウトを実行
- 23. マルチコアクラスタクラウド上でノードJSを実行
- 24. ノードにjsファイルを実行中
- 25. Linq ToList()が即時実行を起動できません
- 26. ノードjsストリームでの実行順序
- 27. ノードjsのリクエストエンティティがmulterのアップロードで大きすぎます
- 28. プロジェクトの即時実行を無効にする
- 29. を同時に実行するためのメソッドが参加 - ノードJS
- 30. バックグラウンドでタスクを実行して、504ゲートウェイのタイムアウトを防ぎます
ありがとうございますが、私は非同期に固執したいと思います。 –