访问全局对象

时间:2016-02-06 22:41:25

标签: javascript node.js

如何将请求结果作为对象的属性提供?目前,console.log(album.artistName)返回undefined。但是,如果我在请求函数中使用console.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);

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

回答了我自己的问题(我认为)。这不是同步发生的。 console.log在artistName函数之前执行。

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

相关问题