2016-11-07 4 views
0

Я использую npmasync waterfall метод для написания функциональности. Там я нашел странную ситуацию (возможно, Мое осознание низкое). Моя функция такова. Я создаю массив событий в первой функции и передаю его второй функции через параметры обратного вызова. Затем я фиксирую этот массив во второй функции и зацикливаю его. Я хочу манипулировать несколькими значениями массива. После этого я отправляю его на окончательную функцию.NodeJs функция обратного вызова водопада не работает

Оператор console.log в конечной функции выводит начальное состояние массива из первой функции, а не те манипуляции, которые я выполнял во второй функции. Любая идея высоко ценится.

var _async = require('async'); 
var criteria = {}; 

_async.waterfall([ 
    function getSortedCalenderItems(callback){ 
     var events = []; // set of events are included inthis array 
     callback(null, events) 
    }, 

    function getUsers(events, callback) { 
      for (var i = 0; i < events.length; i++) { 
       var event = events[i]; 
       var user = event.shared_user; 

       // manipulate user 
       var newUser = { 
        'id' : '<id>', 
        'name' : 'New name' 
       }; 

       event.shared_user = newUser; 
       events[i-1] = event; 

       if(i === (events.length)) { 
        callback(null, events) 
       } 
      } 

    } 
],function(err, events){ 
     console.log(events); // this shows the initial state of the array. Not the manipulated events array. 
     return; 
}); 
+0

Моя осведомленность * низкий * – Sikorski

+0

вы ничего не манипулируя в вашем коде, вы только что создали NEWUSER и то это. Может быть, вы забыли добавить его в свой список. – Sikorski

+0

Да. Ты прав. Я пропустил это. Проверьте обновленный код сейчас. –

ответ

1

Например,

var _async = require('async'); 
var criteria = {}; 

_async.waterfall([ 
    function (callback) { 
     var events = [// set of events are included inthis array 
      { 
       name: "event1", 
       shared_user : "halil" 
      }, { 
       name: "event1", 
       shared_user : "halil" 
      } 
     ]; 
     callback(null, events); 
    }, 
    function (events, callback) { 
     console.log(events) 
     for (var i = 0; i < events.length; i++) { 
      var event = events[i]; 
      var user = event.shared_user; 

      // manipulate user 
      user = { 
       'id': '<id>', 
       'name': 'New name' 
      }; 

      if (i === (events.length - 1)) { 
       callback({}, events) 
      } 
     } 
    } 
], function (err, events) { 
    console.log(err, events); 
}); 
Смежные вопросы