Node.js 找不到异步瀑布最终回调get函数

Node.js 找不到异步瀑布最终回调get函数,node.js,Node.js,我得到的错误是,cb不是函数。但正如在这段代码中所看到的,在异步瀑布的最后一次回调中,我调用了cb,但仍然得到了错误 function shiftIndex(key, cb) { async.waterfall([ (readFileCallback) => { jsonfile.readFile(dataPath, (err, data) => { if (err) return readFileCallback(err, null, nul

我得到的错误是,
cb不是函数。但正如在这段代码中所看到的,在异步瀑布的最后一次回调中,我调用了
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);
  }
)}

err,res,data
是不常见的回调格式,因为res是不必要的。您总是检查
if(数据)
,而不是
if(res)
。我简化了代码。嗯,它更具可读性

function shiftIndex(key, cb) {
    jsonfile.readFile(dataPath, (err, data) => {
        if (err) 
            return cb(err);

        if (!data)  
            return cb(new Error('File Empty'));

        if (!(key in data))
            return cb(new Error('Invalid key'));

        var items = data[key]
        var first = items.shift();
        items.push(first);
        data = items;

        jsonfile.writeFile(dataPath, data, (err) => cb(err, (err) ? null : data));
    });
}; 

检查是否将函数传递给
shiftIndex
。我如何检查?这是我第一次编写异步瀑布
函数shiftIndex(key,cb){console.log(cb)
必须打印“function”。在这种情况下,您可以避免使用异步库。@AikonMogwai刚刚尝试过,它是一个函数。请问为什么我的帖子被否决了?(不是直接向你提问,只是想知道我在哪里可以改进我的帖子是的,当然是真的,我不需要对成功的回复,因为如果它是一个虚假的数据,无论如何都会是空的或空的。只是一个跟进,我的问题现在已经解决了(通过简单的计算机重启)我不知道是什么原因导致了这个错误。我对这个项目所做的唯一更改就是检查“cb”是否是一个函数,正如你之前建议的那样