在setInterval方法节点js

时间:2016-03-13 18:00:22

标签: node.js callback setinterval

我的情况是我拥有一系列员工数据,我需要为每个员工处理并行处理。为了实现它并完成任务,我将事情分解为四个方法,每个方法都有一个回调相互调用并返回回调。我正在使用

  

async.eachSeries

为员工数组的每个元素启动流程。

在最后一个方法中,我必须设置setInterval以执行相同的任务,如果未达到所需的响应,则在重复任务的过程持续5次之前不会清除此间隔(如果未收到所需的值5次,但是在第5次之后清除。)

现在,发生的问题是我在setInterval中处理的数据被最后一个员工的值覆盖。

因此,我无法跟踪所有员工数组元素的流程,并且最后一名员工的处理细节也变得混乱。

我用于执行任务的四种方法之间正在执行将数据保存到redis,MongoDB,Outside Api以在回调中给出响应的过程。

任何人都可以建议更好的方法这样做,我也觉得问题正在发生,因为我没有从SetInterval方法()返回任何回调。但是因为那个方法本身是一个异步方法所以我不知道如何处理情况。

EmployeeArray




    async.eachSeries() used to process EmployeeArray

对于每个我有四个回复Medhods。

async.eachSeries() {   
        Callback1(){
             Callback2(){
                  Callback3(){
                      Callback4(){ 
                                    SetInterval(No CallBack inside this from my side)
                                  }
                             }
                        }
                   }
        }

1 个答案:

答案 0 :(得分:0)

据我所知,异步每个函数都进行并行处理。您也可以使用异步瀑布来使您的代码更干净。尝试这样的事情。

async.each(openFiles, function(file, callback1) {
async.waterfall([
  function(callback) {
    callback(null, 'one', 'two');
  },
  function(arg1, arg2, callback) {
  // arg1 now equals 'one' and arg2 now equals 'two'
    callback(null, 'three');
  },
  function(arg1, callback) {
    // arg1 now equals 'three'
    callback(null, 'done');
  }
], function (err, result) {
  callback1(err);
});
}, function(err){
    //if you come here without error your data is processed
});