我得到的错误是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);
}
)}
答案 0 :(得分:1)
signature|privileged
是不常见的回调格式,因为res是不必要的。您始终选中err, res, data
而不是if (data)
。我简化了代码。 Imho,它更具可读性。
if (res)