私が得たエラーは、cb is not a function
でした。しかし、このコードに見られるように、非同期滝の最終コールバックでは、私はcb
を呼び出しましたが、まだエラーが発生しています。async waterfall最終コールバック関数が見つかりません
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);
}
)}
functionを 'shiftIndex'に渡すことを確認してください。 –
どうすれば確認できますか?これは、私が非同期の滝を書いたのは初めてです – XPLOT1ON
'function shiftIndex(key、cb){console.log(cb)'は 'Function'を出力しなければなりません。この場合、非同期ライブラリの使用を避けることができます。 –