javascript中数组的范围是什么?
我该如何解决这种情况?
var parseXlsx = require('excel');
var arrayURLToSearch = [];
parseXlsx('foo.xlsx', function(err, data) {
if(err) throw err;
for(var i=1; i<2; i++){
arrayURLToSearch[i] = data[i][0];
}
});
console.log(arrayURLToSearch[0]); -> undefined
如何在功能外打印arrayURLToSearch
?
答案 0 :(得分:1)
你做不到。回调发生在将来的某个时刻,您无法预测。试试这个:
var arrayURLToSearch = [];
parseXlsx('foo.xlsx', function(err, data) {
if(err) throw err;
for(var i=1; i<2; i++){
arrayURLToSearch[i] = data[i][0];
}
console.log(arrayURLToSearch[0]);
});
答案 1 :(得分:0)
您的方法是异步的,因此console.log(arrayURLToSearch[0]);
行将在parseXlsx
方法之前执行。
一种解决方案是使用callback
函数。
function execute(callback){
var parseXlsx = require('excel');
var arrayURLToSearch = [];
parseXlsx('foo.xlsx', function(err, data) {
if(err) throw err;
for(var i=1; i<2; i++){
arrayURLToSearch[i] = data[i][0];
}
callback(arrayURLToSearch);
});
}
execute(function(arrayURLToSearch){
console.log(arrayURLToSearch[0]);
});