1
我有一個節點應用程序,我在寫需要使用承諾異步調用。Node.js承諾使用Q
我目前有一個foreach循環從一個.then(函數())的promise中調用,但是當我返回foreach的最終結果時,我什麼也得不到。
在foreach中,我可以console.log數據的值並檢索它,但不在返回之前的for循環之外?
var Feeds = function(){
this.reddit = new Reddit();
}
Feeds.prototype.parseRedditData = function(){
var _this = this;
this.getData(this.reddit.endpoint).then(function(data){
return _this.reddit.parseData(data, q);
});
}
Feeds.prototype.getData = function(endpoint){
var deferred = q.defer();
https.get(endpoint, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
deferred.resolve(JSON.parse(body));
});
}).on('error', function(e) {
deferred.reject(e);
});
return deferred.promise;
}
var Reddit = function(){
this.endpoint = "https://www.reddit.com/r/programming/hot.json?limit=10";
}
Reddit.prototype.parseData = function(json, q){
var dataLength = json.data.children.length,
data = [];
for(var i = 0; i <= dataLength; i++){
var post = {};
post.url = json.data.children[i].data.url;
post.title = json.data.children[i].data.title;
post.score = json.data.children[i].data.score;
data.push(post);
}
return data;
}
我沒有看到用Q的'.then'功能或'的任何地方forEach'在代碼中? – laggingreflex 2015-02-09 00:08:45
問:您在調用Node.js時是否使用了「--harmony」標誌?問:你是否有任何錯誤處理程序(或任何類型的錯誤檢查)? – FoggyDay 2015-02-09 00:09:47
'this.getData'在哪裏? – 2015-02-09 00:30:04