所以这就是我的困境。我有一个电影列表,我从网站上刮下来的女巫,然后我想为我新构建的对象添加其他属性(json)
现在我使用的omdi api女巫支持按标题搜索电影。 然后我使用请求和q中间件发出get请求。当我在回调中从omdb api收到信息时,我将该数据添加到对象中。
现在下一部分是我的问题所在。现在我想使用前一个请求中的数据返回一个新请求。现在我创建一个新的获取请求并返回它,但然后()func isin不返回任何内容。但我似乎没有意识到我做错了什么。
这是我的代码..
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 func
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;
}
};
答案 0 :(得分:0)
问题解决了。罗默说,请求没有任何问题。但是,我不知道每10名女巫的移动数据基数限制了40个请求:)