gpt4 book ai didi

Javascript多重 promise 不适用于q和请求中间

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

这就是我的困境。我有一个电影列表,是我从网站上抓取的,然后我想向我新构建的对象(json)添加其他属性

现在我使用的omdi api女巫支持按标题搜索电影。然后我使用 request 和 q 中间件发出 get 请求。当我在回调中收到来自 omdb api 的信息时,我会将该数据添加到对象中。

现在下一部分是我的问题所在。现在我想使用前一个请求中的数据返回一个新请求。现在我发出一个新的 get 请求并返回它,但 then() 函数不返回任何内容。但我似乎没有意识到我做错了什么。

这是我的代码..

var promises = [];
films.forEach(function (film) {
// Get omdbapi information
promises.push(HttpService.getContent(configExternal.omodburl + '?t=' + film.title.trim() + '&y=' + film.year + '&plot=true&tomatoes=true&r=json').then(function (data) {
var result = JSON.parse(data);
if(Boolean(result.Response) === true) {
film.omdb.push(result);
}
var imdbid = result.imdbID;
return HttpService.getContent(configExternal.themoviedburl + imdbid + '/videos?api_key=' + configExternal.themoviedbkey);
}).then(function(data) {
film.trailers = [];
film.trailers.push(JSON.parse(data));
}).catch(function (err) {
logger.error().info('Error getting ' + film.title + ' from omdb, ErrorMessage : ' + err);
}));
});

//--------------------------------
// When all promises have finished
//--------------------------------
Promise.all(promises).then(function (data, err) {
// do stuff with the data
});

这是我的 getContent 函数

var Service = {
getContent: function(url) {
var deferred = q.defer();
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
deferred.resolve(body);
} else {
deferred.reject(error);
}
});
return deferred.promise;
}
};

最佳答案

问题已解决。正如罗默所说,这个要求并没有什么问题。但电影数据库限制每 10 秒 40 个请求,我不知道:)

关于Javascript多重 promise 不适用于q和请求中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910611/

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