【发布时间】:2017-01-25 09:53:07
【问题描述】:
我需要组织函数 Func1 和 Func2 的并发竞赛过程,并在最快的函数得到解决时解析 main。
const Promise = require('bluebird')
const Func1 = require('./functions/func1')
const Func2 = require('./functions/func2')
let functions = [
Func1(25),
Func2(40)
]
Promise.any(functions).spread(response => {
console.log(response)
})
这两个函数看起来都像
const Promise = require('bluebird')
module.exports = function(data) {
return new Promise((resolve, reject) => {
let sum = 0
// SOME SLOW OPERATION FOR TEST
for (var i = 1; i <= 1000000000; i++) {
sum += i * data
}
resolve(sum)
})
}
但是使用这段代码,函数可以同步运行。我希望他们在Promise.any 部分并发处理。我应该如何重写我的代码来做到这一点?我试图在process.nextTick 中包装函数,但这个提示也不起作用。
【问题讨论】:
标签: node.js asynchronous concurrency promise bluebird