我使用节点js并调用spotify API并在body对象中接收响应,如下代码所示:
var options = {
url: 'https://api.spotify.com/v1/me',
headers: { 'Authorization': 'Bearer ' + access_token },
json: true
};
request.get(options, function(error, res, body) {
console.log(body)
});
这给了我输出:
但是现在,当我试图访问函数外部的body对象时,我就没有定义了。我认为问题在于,我正在进行异步调用,因此在接收响应之前,将执行使用body变量外部函数的语句。但我对如何解决这个问题感到有点困惑。
任何帮助都是非常感谢的。
编辑:
request.get(options, function(error, res, body) {
console.log(body)
response.render('user_account.html', {
data: body
})
});
它给出了输出:
发布于 2018-09-10 13:21:56
用承诺。
您可以尝试如下:
const apiCall = () => {
return new Promise((resolve, reject) => {
var options = {
url: 'https://api.spotify.com/v1/me',
headers: { 'Authorization': 'Bearer ' + access_token },
json: true
};
request.get(options, function(error, res, body) {
if(error) reject(error);
console.log(body);
resolve(body);
});
});
}
apiCall().then((body) => {
// do your things here
})
.catch((err) => console.log(err));
https://stackoverflow.com/questions/52258510
复制相似问题