node.js でステップモジュールを使用してシリアル実行を取得していますが、期待どおりに動作していません。
コード
//sample
var goalSteps = [1:{"goal":"faq","page:"faq"},2:{"goal":"offers","page:"offers"}];
var goalConversion = [];
var length = goalSteps.length;
step(
function getData() {
var scope= this;
for(var i =0; i < length ;i++){
var filter = goalSteps[i];
//get data from database[mongodb]
scope.getData(filter,function(res){
console.log("result",res);
goalConversion[i] = res;
if(length-1 == i){
this.call();
}
});
}
},
function final(err, goal) {
console.log("step2",goalConversion);
}
);
結果
Step2 []
getData関数を実行する前に、最終関数が実行されました。
シナリオ- 期待どおりの流れ
goalSteps
をループして、mongodb からデータを取得したいと考えています。goalConversion
結果を配列にプッシュします。に基づいてすべてのデータを取得した後
goalSteps
。goalConversion
最終関数でコンソールを実行します。
どんな助けも大いに役立ちます。同様のシナリオのステップモジュールの例も素晴らしいです。