2013-05-17 32 views
1

我想使用这个脚本: https://github.com/peol/node-spotifyJavascript函数VAR全球

我无法弄清楚如何使

spotify.search({ type: 'track', query: 'dancing in the moonlight' }, function(err, data){ 
    return data; 
}); 

数据globaly可用?

我试图像战利品var data =前面那个,但它并没有帮助

+0

是异步调用? –

+0

您应该查看http://stackoverflow.com/q/14220321/218196以了解异步代码的工作原理。虽然您可以将价值全球化,但您在访问时必须注意*。正如答案中所证明的,将回复传递给回调是一种更好的方法。或者使用promise,也有它们的Node库。 –

回答

2

如果你需要数据可用“全球”在当前文件的范围,只是定义了呼叫之外的另一个变种:

var myData; 
spotify.search({ type: 'track', query: 'dancing in the moonlight' }, function(err, data){ 
    myData = data; 
}); 

如果你需要它是全球可用在您的节点的过程,然后执行以下操作:

spotify.search({ type: 'track', query: 'dancing in the moonlight' }, function(err, data){ 
    global.myData = data; 
}); 
+0

谢谢,我使用了全球的一个。 – Jonhhan

+2

供参考:使用'全球'作品,但被认为是糟糕的编码风格。 – TheHippo

+1

这解决了*哪里可以读取变量的问题,但是当*可以读取时,它无助于解决*的问题。这就是首先使用回调的全部原因。接下来的问题将是“为什么'myData'具有'undefined'值,即使我将它设置在回调中?” :-)(回答:回调还没有运行。)当然,如果代码的其余部分考虑到了这一点,它会是好的,但仍然如何知道'myData'何时可用?这就是为什么通常的方法是直接在回调中或者在它所调用的函数中采取一些行动。 –