从节点js异步函数进行多次回调

时间:2016-03-09 16:34:05

标签: javascript node.js asynchronous

如何从异步函数中返回多次调用的异步函数返回的数据对象。

我试图像这样实施:

class Child < Entity
  @instance_counter = 0
end

我怎样才能正确完成,搜索和搜索但无法找到解决方案。

聚苯乙烯。我正在使用Figlet.js

2 个答案:

答案 0 :(得分:0)

我不知道您是否可以使用外部模块,但可以使用tiptoe

像任何常规模块一样使用npm install tiptoe安装它,它基本上是这样的:

var tiptoe = require('tiptoe')

function someAsyncFunction(obj, callback) {
  // something something
  callback(null, processedData);
}

tiptoe(
  function() {
    var self = this;
    var arr = ['there', 'are', 'some', 'items', 'here'];
    arr.forEach(function(item) {
      someAsyncFunction(item, self.parallel());
    });
  },
  function() {
    var data = Array.prototype.slice.call(arguments);
    doSomethingWithData(data, this);
  },
  function(err) {
    if (err) throw (err);
    console.log('all done.');
  }
);

someAsyncFunction()是您要调用的异步函数,并将callback参数作为函数调用errordatadata参数将作为数组项传递给tiptoe流上的以下函数。

答案 1 :(得分:0)

自己做了:) Thanks to mostafa-samir's post

var figlet = require('figlet');

function WaterfallOver(list, iterator, callback) {

    var nextItemIndex = 1;
    function report() {
        nextItemIndex++;
        if(nextItemIndex === list.length)
            callback();
        else
            iterator([list[0],list[nextItemIndex]], report);
    }
    iterator([list[0],list[1]], report);
}

var FinalResult = [];

WaterfallOver(["hello","Standard","Ghost"], function(path, report) {
    figlet.text(path[0], { font: path[1]  }, function(err, data) {
      if (err) {
          FinalResult.push("Font name error try help");
          report();
          return;
      }
      data = '<pre>.\n' + data + '</pre>';
      FinalResult.push(data);
      report();
  });
}, function() {
    console.log(FinalResult[0]);
    console.log(FinalResult[1]);
});