我有程序从电影数据库中提取数据。我编写了一个函数,它使用jQuery从api中提取数据,如下所示。
var get_details = function(url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
resolve(this.responseText);
} else {
reject(status);
}
};
xhr.send();
});
};
我的主文件中有一个使用上述功能的路径。我使用链式承诺传递承诺的返回数据。代码如下。
app.get("/actor", function(req, res){
var name = req.query.actor;
var id_url = `http://api.tmdb.org/3/search/person?api_key=${api_key}&query=${name}`;
var promise = data.get_details(id_url).then((data) => {
var json = JSON.parse(data);
var id = json.results[0].id;
return id;
}).then((id) => {
var movie_url = `http://api.themoviedb.org/3/discover/movie?api_key=${api_key}&with_cast=${id}`;
var x = data.get_details(movie_url);
console.log(x);
return x;
}).then((content) => {
console.log(content);
//want to render this content
});
//console.log(main);
var template = fs.readFileSync("./public/template.ejs", "utf8");
//var rendered = ejs.render(template, {content});
res.send(name);
});
我成功地能够提取数据,并在记录正确的输出时使用内容变量。我想在这个承诺之外使用这个内容,以便我可以在这行代码中使用它。
//var rendered = ejs.render(template, {content});
我目前收到错误"promise{<pending>}"
。如何在承诺之外的内容中使用数据。