0

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関数を実行する前に、最終関数が実行されました。

シナリオ- 期待どおりの流れ

  1. goalStepsをループして、mongodb からデータを取得したいと考えています。

  2. goalConversion結果を配列にプッシュします。

  3. に基づいてすべてのデータを取得した後goalSteps

  4. goalConversion最終関数でコンソールを実行します。

どんな助けも大いに役立ちます。同様のシナリオのステップモジュールの例も素晴らしいです。

4

1 に答える 1