gpt4 book ai didi

javascript - Node.js promise 使用 Q

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:36 25 4
gpt4 key购买 nike

我正在编写一个 Node 应用程序,需要在异步调用中使用 Promise。

我目前有一个从 Promise 的 .then(function()) 中调用的 foreach 循环,但是当我返回 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;
}

最佳答案

Feeds.prototype.parseRedditData = function(){
var _this = this;

this.getData(this.reddit.endpoint).then(function(data){
return _this.reddit.parseData(data, q);
});
}

当我看到这个时,我在 promise 的回调中看到了“返回”...我不知道你为什么要这样做,但我只是想确定一下:

我希望这个“return”成为函数“parseRedditData”的返回值,这是行不通的。

在这里返回数据的唯一方法是使用回调或 promise ,如下所示:

Feeds.prototype.parseRedditData = function(callack){
var _this = this;

this.getData(this.reddit.endpoint).then(function(data){
callback(_this.reddit.parseData(data, q));
});
}

关于javascript - Node.js promise 使用 Q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com