回调参数在JS异步库中做了什么?

时间:2017-10-13 02:30:17

标签: 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)callback(null, 3)

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

Task 1

第一个和第二个参数做了什么以及为什么第二个参数123

1 个答案:

答案 0 :(得分:1)

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

有关为什么节点更喜欢错误第一次回调,请参阅this answer