异步瀑布最终回调找不到功能

时间:2016-08-23 14:55:11

标签: node.js

我得到的错误是cb is not a function。但是正如在这段代码中看到的那样,在异步瀑布的最终回调中,我调用了cb但仍然得到了错误。

function shiftIndex(key, cb) {
  async.waterfall([
    (readFileCallback) => {
      jsonfile.readFile(dataPath, (err, data) => {
        if (err) return readFileCallback(err, null, null);
        else if (!data) return readFileCallback(new Error('File Empty'), null, null);
        else return readFileCallback(null, data, key)
      });
    },

    (data, key, stackCallback) => {
      console.log("The KEY is -> " + key);
      if (!(key in data)) return stackCallback(new Error("Invalid key"), null);
      else{
        var items = data[key]
        var first = items.shift();
        items.push(first);
        return stackCallback(null, data);
      }
    },

    (data, writeDataCallback) => {
      jsonfile.writeFile(dataPath, data, (e) => {
        if (e) return writeDataCallback(e, false, null);
        else return writeDataCallback(null, true, data);
      })
    }
  ],

  (e, success, data) => {
    if (e) return cb(e, false, null);
    return cb(null, true, data);
  }
)}

1 个答案:

答案 0 :(得分:1)

signature|privileged是不常见的回调格式,因为res是不必要的。您始终选中err, res, data而不是if (data)。我简化了代码。 Imho,它更具可读性。

if (res)