1
我想了解承諾如何工作,並顯然缺少的東西。如何從API中返回對象承諾在節點
在節點我有一個使用的Twit模塊返回Twitter的結果的搜索功能,那麼我想這樣做,結果什麼:
var twitter = require('../server/twit');
exports.getTwitSearchResult = function(query, cb) {
var t = twitter.searchTwitter(query)
// do something with variable 't'
// var tweet = t.data.statuses
// ...
// ...
cb(null, tweet);
};
Twitter的功能在'../server/twit'
:
var Twit = require('twit')
var bot = new Twit(config);
exports.searchTwitter = function(query){
var tsearch = function(query, callback){
return bot.get('search/tweets', {
q: query
, since: '2016-02-01'
, result_type: 'popular'
, count: 1
}, function(err, data, response){
callback(data)
});
};
tsearch(query, function(callback){
return callback
})
};
問題是't'總是以undefined
或[object Promise]
的形式返回。我試圖用承諾和回調寫功能的幾種不同的方式,沿東西線這樣的:
var twitter = require('../server/twit');
exports.getTwitSearchResult = function(query, cb) {
var t = function(query, callback){
return twitter.searchTwitter(query)
.then(function(tweet){
callback(tweet)
})
}
// do something with variable 't'
// var tweet = t.data.statuses
// ...
// ...
cb(null, tweet);
};
但後來我得到TypeError: Cannot read property 'then' of undefined
我怎麼可以這樣寫更好,這樣我可以使用從Twit承諾返回的結果?
您是否在第一段代碼中嘗試過使用.then()? –
是的 - 這就是它未定義的地方 – alphaleonis