访问请求会在全局对象中生成

Accessing request results in global object

本文关键字:对象 全局 请求 访问      更新时间:2023-09-26
如何

使请求结果作为对象的属性提供?目前,console.log(album.artistName) 返回未定义。但是,如果我控制台.log album.name 在请求函数中,控制台将返回专辑名称。

我希望能够创建自己的对象,其中包含我需要的数据点,以便我可以普遍访问。

var request = require('request');
var album = {};
    album.max = 'Max';
    album.artistName = artistName();
function artistName(){
request('https://api.spotify.com/v1/albums/4INyHv55ddXe0A2TNvKezm', function(err, response){
  if(!err && response.statusCode == 200){
    var data = JSON.parse(response.body);
    album.name = data.artists[0].name;
    }
  });
}
console.log(album);

添加此项,然后重新启动应用,发出快速请求(您有 10 秒的时间):

setTimeout(function(){
    console.log(album);
}, 10000);

但是你的问题没有多大意义。你总是需要一些东西来触发你的代码,当它触发时,你不会在全局范围内,尽管如此处所示,你会看到全局变量。

回答

了我自己的问题(我想)。这不是同步发生的。控制台.log在艺术家名称函数之前执行。

我想使用异步或类似的东西会解决。