node.js的事件驱动编程模型使得协调程序流有点棘手.
简单的顺序执行变成了嵌套的回调,这很容易(虽然写下来有点复杂).
但并行执行怎么样?假设您有三个可以并行运行的任务A,B,C,当它们完成时,您希望将结果发送到任务D.
使用fork/join模型,这将是
我如何在node.js中编写它?有没有最佳做法或烹饪书?我是否每次都必须手动滚动解决方案,或者是否有一些带帮助程序的库?
javascript parallel-processing concurrency fork-join node.js
loadInfo: function(){
var jsonCounter = 0,
room = ['room1','room2','room3'],
dates = [],
prices = []
$.each(booking.rooms, function(key, room_name) {
$.getJSON('/get_info.php?room='+room_name, function(data) {
dates[room_name] = data
jsonCounter++
})
$.getJSON('/get_info.php?room='+room_name+'&prices', function(data) {
prices[room_name] = data
jsonCounter++
})
})
function checkIfReady() {
if (jsonCounter === rooms.length * 2) {
clearInterval(timer)
run_the_rest_of_the_app()
}
}
var timer = setInterval(checkIfReady, 100)
}
Run Code Online (Sandbox Code Playgroud)
(修改了很多,因为它是类等的一部分等)
目前,这感觉有点hackish,因为计时器的使用似乎是垃圾.我会使用$ .when和$ .done,但我不知道可能有多少房间,所以我不知道什么时候投入.
如何确保只有在所有AJAX请求返回后才会调用run_the_rest_of_the_app()?