如何并行运行所有功能

时间:2015-07-07 18:43:40

标签: javascript node.js multithreading timer callback

我发布了一段下面的代码,即“非异步功能”

Threshold=None

如果我们将运行上面的例子,这应该是好的和c()函数,将不得不等待直到a()和b()函数将完成工作。我期望所有的函数都应该并行运行(多线程(异步)函数)。任何人都可以帮助我如何使用nodejs

实现它

2 个答案:

答案 0 :(得分:0)

使用Promise.allPromise.join

var Promise = require('bluebird');
return Promise.join(Promise.resolve().then(a),
                    Promise.resolve().then(b),
                    Promise.resolve().then(c),
                    function(){console.log('complete')});

答案 1 :(得分:0)

与评论中提到的一样,您可以使用child_processcluster.fork。这是一个简单的child_process.spawn实现:

(如果你不想使用eval,那么将这些函数写在不同的文件中并调用它们)

var spawn = require('child_process').spawn
...

spawn('node',['-e', '('+a.toString()+')()']) // send the function as string and evaluate in node
  .stdout.on('data', console.log.bind(console))
  .on('close',function(){
    //call c() when a() ended
    c()
  })
  .setEncoding('utf8')

spawn('node',['-e', '('+b.toString()+')()'])
  .stdout.on('data', console.log.bind(console))
  .setEncoding('utf8')