我是Browserify/Node.js的新手,我一直在尝试使用npm拉取数据。我在一个js文件main.js中拉取数据的代码是:
const { getChart } = require('billboard-top-100');
var artistArray = [];
getChart('artist-100', '', (err, chart) => {
if (err) console.log(err);
for (let i = 0; i < 100; i++) {
artistArray.push(chart.songs[i].artist)
}
console.log(artistArray);
return artistArray;
});
然后,我将这个文件与Browserify捆绑在一起,以便能够在单独的js文件bundle.js中的HTML代码中访问它。
虽然我可以使用console.log来记录artistArray变量,并执行终端命令〉node main.js,这会成功显示artistArray,但我无法在主html文件中获取该变量。
我什么都试过了。如果这个问题很蠢,我很抱歉,我是个初学者。
1条答案
按热度按时间lp0sw83n1#
如果你在回调函数
(err, chart) => {...}
之外调用artistArray
,那么你会得到和init相同的值,因为那时你还没有来自getChart
的数据,所以你只能在回调函数内部使用它。总结如下:
artistArray
在这里是无用的。setTimeout
与delay
,你认为这是足够安全的getChart
做的数据。对我来说,为了处理这个,我通常会建立一个函数,它的输入是一个数组,我们要处理它,把所有的逻辑都放在那里,然后把它放到回调函数中。