繁体   English   中英

async.each-回调函数是什么?

[英]async.each - what's the callback for?

我只想查看网址列表,以查看每个网址是否存在,并在完成所有步骤后继续:

var urls = [ "http://...", "http://...", ... ];

async.each(urls, function(url, ??callback??) {
             http.get(url, function(response) {
                 console.log(response.statusCode);
             });
           }, function(err) {
                if (!err)
                   console.log("All urls called");
           });

我该为什么做??callback?? 当每个任务完成后我什么都没继续的时候? 文档没有表明它是可选的。

第二个参数iteratee ,它是一个AsyncFunction

AsyncFunction()

在Async上下文中,“异步函数”是具有可变数量参数的异步函数,最后一个参数是回调。 function (arg1, arg2, ..., callback) {} )最终的回调形式为callback(err, results...) ,一旦函数完成,就必须调用它。 回调应以Error作为其第一个参数来调用,以表示发生了错误。 否则,如果未发生错误,则应使用null作为第一个参数以及可能适用的任何其他结果参数来调用,以表示成功完成。 回调函数必须恰好被调用一次,最好是在JavaScript事件循环的稍后时刻进行。

这是一个async调用您的iteratee的参数。 对于您的情况,您需要在get完成(成功或失败)时调用它:

var urls = [ "http://...", "http://...", ... ];
async.each(urls, function(url, callback) {
    http.get(url, function(response) {
        console.log(response.statusCode);
        callback(null); // <====
    });
}, function(err) {
    if (!err)
        console.log("All urls called");
});

async需要知道操作已经完成,以便可以管理整个过程。

上面的示例很简单,您可能希望将成功与失败区分开来,但是您的想法是必须使用错误(第一个参数)或成功(第一个参数= null ,可选的第二个参数)调用收到的回调。

完成每个异步任务(即获取URL)后,您应该调用callback

所以像...

http.get(url, function(response) {
  // Here you call it with `null` to signify a non-error completion.
  callback(null);
});

...在您主要的每个功能内。 如果您只想调用它而无需任何其他代码,则可以使用http.get(url, callback.bind(null, null))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM