async.each - 回调是什么?

时间:2017-04-04 14:19:21

标签: javascript node.js async.js

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

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??放置什么? documentation并不表示它是可选的。

2 个答案:

答案 0 :(得分:2)

second parameteriteratee,即AsyncFunction

  

AsyncFunction()

     

"异步功能"在Async的上下文中是一个具有可变数量参数的异步函数,最后一个参数是回调。 (function (arg1, arg2, ..., callback) {})最终回调的格式为callback(err, results...),必须在函数完成后调用。应使用Error作为其第一个参数调用回调,以指示发生错误。否则,如果没有发生错误,则应调用它作为第一个参数的null,以及可能适用的任何其他结果参数,以表示成功完成。回调必须只调用一次,理想情况是在JavaScript事件循环的后续时刻。

论证asynciteratee称为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需要知道操作已经完成,因此它可以管理整个过程。

我上面的例子很简单,你可能希望将成功与失败区分开来,但想法是你必须通过错误(第一个参数)或成功(第一个参数= tf.unsorted_segment_sum来调用你收到的回调。 ,可选的第二个参数)。

答案 1 :(得分:0)

当你完成每个异步任务,即获取网址时,你打算调用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))