私は、機能Func1
Func2
の同時レースプロセスを整理し、最も速い機能が解決されるときにメインを解決する必要があります。bluebird約束を使って同時関数呼び出しを作成するには?
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
に関数をラップしようとしていましたが、このヒントもうまくいきません。
ありがとうございました!しかし、どのように私はメインプロセスから別のフォーク/労働者に仕事を送ることができますか?それとも、http-requestの後ろにworker-functionを置くべきですか? – mikatakana
@mikatakana - プロセス間通信には多くの方法があり、ジョブキューを設計するさまざまな方法があります。子プロセスを開始すると、子プロセスのstdinおよびstdoutストリームが渡されます。あなたはそれを使うことができます。あるいは、別の仕事の準備ができているときに、httpを使ってあなたの子供があなたから新しい仕事をあなたに知らせることができます。または、おそらく100の他のデザインの誰か。 – jfriend00
@mikatakana - これはあなたの質問に答えましたか? – jfriend00