async.parallel中的回调是如何工作的(它来自哪里?)
how does the callback in async.parallel work (where does it come from?)
我在文档中找到了这个例子。我理解主回调(函数(错误,结果)…)有效,但传递到一个和两个函数中的"callback"参数是什么?这些是从哪里来的,它们是做什么的?
async.parallel({
one: function(callback){
setTimeout(function(){
callback(null, 1);
}, 200);
},
two: function(callback){
setTimeout(function(){
callback(null, 2);
}, 100);
}
},
function(err, results) {
// results is now equals to: {one: 1, two: 2}
});
callback
参数由异步基础结构传递给函数。它指向async内部的一个函数(尽管这不是您需要知道的)。异步基础结构将它传递给您,并要求您在正确的时间调用它。
这就是你如何与异步库通信,告诉它你的异步函数已经完成了它的工作,以及它是成功完成还是有错误。当你的函数完成它的工作时,你调用该函数,它会通知异步库进程的这一步现在已经完成(错误或成功)。
仅供参考,如果您熟悉node.js中的Express中间件,它与传递给中间件的next
参数非常相似。当您的中间件被调用时,传递给它的参数之一是next
回调。中间件完成它的工作(可以是异步的),然后当它完成时,它通过调用传递给它的next()
回调来告诉Express基础设施它已经完成
这里有一个与Express有点相似的例子:
app.use(function (req, res, next) {
doSomethingAsync(function() {
next();
})
});
它不是来自任何地方,它只是库的工作方式,回调用于将数据传递给下一个函数。
这是这里的功能:
function _parallel(eachfn, tasks, callback) {
callback = callback || noop;
var results = isArrayLike(tasks) ? [] : {};
eachfn(tasks, function (task, key, callback) {
task(rest(function (err, args) {
if (args.length <= 1) {
args = args[0];
}
results[key] = args;
callback(err);
}));
}, function (err) {
callback(err, results);
});
}
https://github.com/caolan/async/blob/master/dist/async.js#L3471
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- ajaxToolkit PopupControlExtender不工作.过时的
- async.parallel中的回调是如何工作的(它来自哪里?)
- 如何使for循环与async.parallel()一起工作