一連の匿名関数を動的にロードして実行し、前の結果を次の結果に渡そうとしています。
関数の例を次に示します。
module.exports = function (data) {
// do something with data
return (data);
}
関数がロードされると (それらはすべて別々のファイルに置かれます)、オブジェクトとして返されます。
{ bar: [Function], foo: [Function] }
これらの関数を async.waterfall を使用して実行したいと思います。これは、関数のオブジェクトではなく、関数の配列を取るため、次のように変換します。
var arr =[];
for( var i in self.plugins ) {
if (self.plugins.hasOwnProperty(i)){
arr.push(self.plugins[i]);
}
}
これは与える:
[ [Function], [Function] ]
各 async.waterfall を使用して各関数を実行し、前の関数の結果を次の関数に渡すにはどうすればよいですか?
解決
@piergiaj からのコメントのおかげで、関数で next() を使用しています。最後のステップは、着信データを渡すことができる事前定義された関数が配列の最初に配置されていることを確認することでした。
var arr =[];
arr.push(function (next) {
next(null, incomingData);
});
for( var i in self.plugins ) {
if (self.plugins.hasOwnProperty(i)){
arr.push(self.plugins[i]);
}
}
async.waterfall(arr,done);