Node.js - Async.js:并行执行是如何工作的
Node.js - Async.js: how does parallel execution work?
我想知道并行执行在async.js中是如何工作的
async = require('async')
async.parallel([
function(callback){
for (var i = 0; i < 1000000000; i++) /* Do nothing */;
console.log("function: 1")
},
function(callback){
console.log("function: 2")
}
]);
在上面的例子中,我期望得到输出:
功能:2
功能:1
但是,控制台抛出相反的结果,发生了什么?谢谢。
您得到了您不期望的答案,因为async
首先启动function: 1
,并且它没有将控制释放回事件循环。function: 1
中没有async函数
Node.js是一个单线程异步服务器。如果你用长时间运行的CPU任务阻塞了事件循环,那么在长时间运行的CPU任务完成之前,没有其他函数可以被调用。
对于一个大的for循环,尝试使用http请求。例如…
async = require('async')
request = require('request')
async.parallel([
function(callback){
request("http://google.jp", function(err, response, body) {
if(err) { console.log(err); callback(true); return; }
console.log("function: 1")
callback(false);
});
},
function(callback){
request("http://google.com", function(err, response, body) {
if(err) { console.log(err); callback(true); return; }
console.log("function: 2")
callback(false);
});
}
]);
javascript是单线程的,除非你使用特殊的库/模块。因此,当你执行这段代码时,它将执行第一个函数,然后是第二个函数。
async。Parallel所做的是执行所有函数并等待所有响应,然后在回调中执行代码。
因为您使用的所有代码都是同步的,所以结果将是同步的。
相关文章:
- 如何使用多个jquery版本,以便Responsive Slides.js工作
- 无法使FlowType.js工作
- Intellisense没有;t在VS2013中为JS工作
- 有人能解释一下如何#ifeq吗/section键使用handle.js工作
- 使dropzone.js工作的傻瓜指南
- 如何获得侧边栏.js工作
- 如何在没有 Web 服务器的情况下做出响应.js工作
- 创建JS工作,但不显示工具栏
- 无法获得简单的敏捷.js工作
- 通过有错误的 Ajax-Request 打印出 HTML 会阻止进一步的 JS 工作
- Angular JS-工作函数中的“错误:[$interpole:interr]Can't interpole:
- 推特's Bootstrap Popover:赢得't工作,即使其他JS工作正常
- 可以'不要让typeahead.js工作
- 无法让Quicksand.js工作
- 通过Grunt使用Node.js工作SASS预处理器
- 可以'不要让popcorn.js工作
- 不能让Bootstrap modal.js工作
- 我怎么能与wordpress中的wow.min.js工作
- 无法让haxe-pixi.js工作-我得到一个空白的白色屏幕
- 不能让impress.js工作