在async系列中包含一个函数

时间:2017-01-31 15:05:52

标签: node.js express npm

我正在使用twit包。 twit.get函数应该返回将用于在表中插入数据的数据。

如何将async任务中的 var tweet=new twit(config); var asyncTasks = []; var responseObj = {}; asyncTasks.push(insertTweets.bind(null,10476462)); async.series(asyncTasks, function(error){ if(error){ } res.send(response); }) tweet.get('statuses/user_timeline', { screen_name:'adamdangelo', count: 10}, function(err, data, response) { cosole.log(data); }) function insertTweets(userId,cb){ for(var i=0;i<data.length;i++){ var t={user_id:10476462, tweet_id:i,tweet: data[i].text}; con.query("INSERT INTO `tweets` SET ?",t, function(err,data,response){ if(err){console.log('Error in inserting'+err); return err;} console.log('Tweets inserted'); }) } } 作为函数包含在内?

{{1}}

1 个答案:

答案 0 :(得分:0)

而不是使用回调:

tweet.get('statuses/user_timeline', { screen_name:'adamdangelo', count: 10}, function(err, data, response) {
cosole.log(data);
})

将其用作承诺:

tweet.get('statuses/user_timeline', { screen_name:'adamdangelo', count: 10})
  .catch(function (err) {
    console.log('caught error', err.stack)
  })
  .then(function (result) {
    console.log('response', result)
  })

所以你可以把它推到你的asyncTasks,例如:

asyncTasks.push(tweet.get('statuses/user_timeline', { screen_name:'adamdangelo', count: 10}))

或使其更具可读性:

var getTweets = tweet.get('statuses/user_timeline', { screen_name:'adamdangelo', count: 10})
asyncTasks.push(getTweets)