【发布时间】:2018-02-13 18:47:45
【问题描述】:
循环内的多个 API 调用 我在循环中进行了多个 API 调用,函数在一个 Promise 中被调用并将数据传递给 body 这部分工作正常,在一个函数中返回一个对 API 进行多次调用的 Promise,在继续之前我必须得到所有结果。但是当我控制台记录结果时,它显示空数组。
var rp = require('request-promise');
var watchonlinemovie = [];
exports.db = function(body){
return new Promise((resolve,reject)=>{
if(body.lenght > 0)
{
body.forEach(movie)
{
let title = movie.title;
title = (title.slice(0,title.indexOf('('))).trim();
let year = movie.title;
year = year.slice(year.indexOf('(')+1,year.indexOf(')'));
let call = "http://www.omdbapi.com/?t="+title+"&y="+year+"&apikey="+key2+"&plot=full";
rp(call)
.then((body) => {
let movie = JSON.parse(body);
watchonlinemovie.push({
title: movie.Title,
year:movie.Year,
rating:movie.Rated,
duration:movie.Runtime,
genre:movie.Genre,
director:movie.Director,
actors:movie.Actors,
image:movie.Poster,
href:movie.link,
});
})
.catch(err => {
reject(err);
});
}
}
resolve(watchonlinemovie);
});
}
【问题讨论】:
-
使用 Promise.all([]) 使所有请求并行,所有请求完成后返回结果。
-
您在
body.length中有错字。 -
对不起,我看到错字还有其他错字,我正在删除它们,感谢您突出显示它。我是 javascript 和 nodejs 的新手
标签: javascript node.js