2016-10-23 82 views
0

我試圖執行異步瀑布來獲取API結果並將其保存到JSON然後將其保存到數據庫, 這就是我的代碼片段 請幫助!節點和異步有問題

async.waterfall([ 
    function getBook(cbAsync) { 
     books.search(query, (err, result) => { 
     if (err) 
      cbAsync(err) 
     res.json(result) 
     }) 
    }, 
    function saveToJson(saveToJsonCb, cbAsync) { 
     jsonfile.writeFile(file, result, (err) => { 
     if (err) 
      cbAsync(err) 
     }) 
    }, 
    function SaveToDb(saveCb, saveToJsonCb, cbAsync) { 
     const book = { 
     title: res.body.title, 
     authors: [res.body.authors], 
     description: res.body.description 
     } 
     //save the bookInfo to db 
     book.save((err) => { 
     if (err) 
      cbAsync(err) 
     console.log('Book added!') 
     }) 
    } 
    ], function asyncComplete(err) { 
    if (err) { 
     console.warn('Error') 
    } else { 
     console.info('Task complete with success') 
    } 
    }) 

回答

0

第一個任務只有在遇到錯誤時纔會調用回調,這個錯誤在完美的情況下永遠不會被調用。

注意:
1.每個'任務'必須調用回調。
2.確保在每個功能完成之前之前調用回調函數

遵循異步文檔中指示的模式 http://caolan.github.io/async/docs.html#waterfall