javascript - JS 异步库中的回调参数有什么作用?

标签 javascript callback async.js

我看到了一个类似这样的代码(Pro Node)。它使用 async图书馆。

var async = require("async");
async.series([
  function(callback) {
    setTimeout(function() {
      console.log("Task 1");
      callback(null, 1);
}, 300); },
  function(callback) {
    setTimeout(function() {
      console.log("Task 2");
      callback(null, 2);
    }, 200);
  },
  function(callback) {
    setTimeout(function() {
      console.log("Task 3");
      callback(null, 3);
}, 100); }
], function(error, results) {
  console.log(results);
});

当我运行它时,它显示:

Task 1
Task 2
Task 3
[ 1, 2, 3 ]

一切都很好 - 但是,我不太明白回调线是什么:callback(null, 1)callback(null, 2)回调(null,3)

如果我删除所有这些行,当我运行代码时它只会返回:

Task 1

第一个和第二个参数的作用是什么?为什么第二个参数是 123

最佳答案

在async库中,调用回调函数 async.series 运行数组中的下一个函数。第一个参数是任何错误数据。这是一个节点约定,任何错误都是 first parameter到回调函数。第二个参数是成功数据,并作为所有成功数据的数组传递给 async.series 回调的第二个参数。

参见this answer有关为什么节点更喜欢错误优先回调的更多详细信息。

关于javascript - JS 异步库中的回调参数有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46721604/

相关文章:

javascript - 在异步模块内调用没有回调的函数

javascript - 使用 Async 和 MongoDb 按顺序填充集合文档

javascript - Nodejs 异步编程 - 为什么需要 "async"模块?什么是 "Callback Hell"/"Pyramid of Doom"?

javascript - Angularjs 打破了 coffeescript 函数表达式

javascript - 模型更改时的 AngularJS 动画

Javascript 原型(prototype)扩展基类无法从原型(prototype)类访问基类属性/方法

javascript - 多次调用 javascript 会导致 setInterval 永远不会被清除

ruby-on-rails - 如何根据我在 Rails 中的响应状态代码跳过 after_filter 回调?

node.js - 在 Firebase 事务完成之前获取响应

javascript - 在父div上方创建div