我需要使index_to_write变量在函数外部可见。我怎么才能让这一切成为可能呢?
const XlsxPopulate = require('xlsx-populate');
let found = false;
let i = 1;
let index_to_write = 0;
XlsxPopulate.fromFileAsync("todo-list.xlsx")
.then(workBook => {
while (i <= 10 && found === false){
const value = workBook.sheet("Do-Shopping").cell("A" + i.toString()).value();
if (value === undefined) {
found = true;
index_to_write = i.toString();
}
i++;
}
});
console.log("A " + index_to_write + " is the first one to be free of data");
我试图在index_to_write=I.toString();
下面添加return index_to_write;
,但它不能解决问题。
当前,它显示0,就像在初始化中一样,但它应该打印4。如何修复?
非常感谢您在先进!
因为您在函数外部声明了变量,所以您可以看到它。如果不是这样,您将得到未定义的结果,而不是0。
但是,XLSXPopulate.FromFileAsync是一个异步函数并返回一个承诺,并且在调用该方法时不必立即运行该承诺。因此,您的控制台行将在承诺解决之前运行。
因此执行顺序为:
1. let index_to_write = 0;
2. XlsxPopulate.fromFileAsync("todo-list.xlsx")
3. console.log("A " + index_to_write + " is the first one to be free of data");
4. then(workBook => { ...