2016-10-23 59 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