-1

我需要让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");

我试图在return index_to_write;下面添加,index_to_write = i.toString();但它不能解决问题。

目前显示为0,和初始化一样,但应该打印4。如何修复它?

非常感谢您的先进!

4

1 回答 1

0

由于您在函数之外声明了变量,因此您可以看到它。如果不是这种情况,您将得到 undefined 而不是 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 => { ...
于 2020-12-23T14:16:42.227 回答