javascript - async.waterfall 回调在哪里定义

标签 javascript node.js async.js

我正在使用异步库,并使用 async.waterfall 函数,其签名为 async.waterfall([function1,function2,function3],function(err,result){})。现在我明白,每个函数的结果都会传递给下一个函数,并且在中间或执行结束时出现错误时执行最终的回调函数。

我不明白的是,传递的函数数组中的每个函数都将回调作为参数,并且回调在每个函数中执行并返回该函数的结果。但我不明白该回调函数是在哪里定义的。

下面是一段示例代码

 async.waterfall([
 function getUserAvatar(callback) {
    console.log("Callback function is " + callback)//print the 
     callback definition function 
    github.search.users({ q: 'airbnb' }, function(err, res) {
        if (err) {
            callback(err, null);
            return;
        }

        var avatarUrl = res.items[0].avatar_url;
        callback(null, avatarUrl);
    });
  },
  function wrapAvatarInHtml(avatarUrl, callback) {
    var avatarWithHtml = '<img src="' + avatarUrl + '"/>';
    callback(null, avatarWithHtml);
}
], function(err, result) {
 if (err) {
    console.error(err);
    return;
 }
console.log(result);
})

当我执行上面的代码时,我执行的行 console.log("Callback function is "+ callback) 它会打印以下定义。

function () {
        if (fn === null) throw new Error("Callback was already called.");
        var callFn = fn;
        fn = null;
        callFn.apply(this, arguments);
    }

现在我不明白这个定义是从哪里来的。我也搜索了异步库,但找不到它。 谁能解释一下这个。

最佳答案

如果您查看 link 中的代码。 next() 定义的是正在调用的回调。它是隐式的,您不必定义,因为即使您传递给异步 waterfall 的任务也不是由您调用,而是由 async.waterfall()

关于javascript - async.waterfall 回调在哪里定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55374094/

相关文章:

javascript - 使用 angular-router 在页面中导航 View

javascript - 下个月倒计时 - 进度条 - JavaScript

node.js - EC2 托管的 Node.js 应用程序 - 无法远程连接到端口

node.js - 来自 SFTP 连接的 Node 异步 ReadStream

node.js - node.js 中的 async.js waterfall : how to use bind and this?

javascript - 如何在 "extension"方法中修改这个对象?

javascript - 在显示 div 之前加载图像

javascript - 类型错误 : Cannot call method 'matches' of undefined

unit-testing - 在 node.js 中测试响应?

node.js - async.waterfall 不适用于 mongoose 异步函数