2016-08-23 20 views
-1

私が得たエラーは、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); 
    } 
)} 
+0

functionを 'shiftIndex'に渡すことを確認してください。 –

+0

どうすれば確認できますか?これは、私が非同期の滝を書いたのは初めてです – XPLOT1ON

+0

'function shiftIndex(key、c​​b){console.log(cb)'は 'Function'を出力しなければなりません。この場合、非同期ライブラリの使用を避けることができます。 –

答えて

1

err, res, data解像度が不要であるため、コールバックの珍しい形式です。 if (res)ではなく、常にif (data)をチェックします。私はコードを単純化する。 Imho、それはもっと読みやすいです。

+0

はい、間違ったデータが空であればnullなので、本当に成功するかどうかは確かではない。私の問題は今解決されました(単純なコンピュータの再起動によって)私は何が原因でエラーが発生するのか分かりません。私がプロジェクトに行った唯一の変更は、 'cb'が機能かどうかを確認することでした – XPLOT1ON

関連する問題