から非同期滝を作成します。私は非同期メソッドを持つオブジェクトの配列を持っていると言うオブジェクト
[
{
partOne: function(input) {
// Do something async
},
partTwo: function(result) {
// Do something w/ result of partOne
}
},
{
partOne: function(resultOfPrevious) {
// Do something async
},
partTwo: function(result) {
// Do something w/ result of partOne
}
},
{
partOne: function(resultOfPrevious) {
// Do something async
},
partTwo: function(result) {
// Do something w/ result of partOne
}
}
]
私は、私の入力を持つ最初のオブジェクトのpartOneを実行partTwoコールバックに結果(非同期)を渡したいです次のオブジェクトのpartOneへの入力としてpartTwoの結果を渡します。配列は、1つまたは複数のオブジェクトから構成できます。私はこの種のコードを実行するための最良のパターンが何であるか疑問に思っています。
これは、async.js:https://caolan.github.io/async/docs.html#waterfallのwaterfallメソッドと多少似ていますが、ライブラリなしでこれを行う方法とクリーナーコードを使うことができますか?
async/awaitがここで助けになるかどうかわかりませんか?元の質問は、前の関数値で何かをする次の機能を使用する場合は、単にそれから、その後に(機能を変更する滝
let collector = [];
for (waterfallObj of waterfall) {
let tempArr = Object.values(waterfallObj);//get the functions out of the object
for (waterfallFunc of tempArr) {
collector.push(waterfallFunc);
}
}
//now you have your functions in order in collector
function recursiveCallback(i) {
if (i>collector.length-1) {
return;//if there are no more to call then return
}
collector[i]().then(function(){
recursiveCallback(i+1);
});
}
と呼ばれる変数の下にある中で与えられたオブジェクトのあなたの配列を想定し
とても素敵で、とてもきれいです。 –