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”是否是一个函数,正如你之前建议的那样