我只想查看一个网址列表,看看每个网址是否存在,并在完成所有内容后继续:
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并不表示它是可选的。
答案 0 :(得分:2)
second parameter为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
需要知道操作已经完成,因此它可以管理整个过程。
我上面的例子很简单,你可能希望将成功与失败区分开来,但想法是你必须通过错误(第一个参数)或成功(第一个参数= 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))
。