我正在尝试更新promise函数中的变量值。我在做什么错了?
final val maxIter: IntParam = new IntParam(this, "maxIter",
"maximum number of iterations (>= 0)", ParamValidators.gtEq(0))
答案 0 :(得分:2)
readFile
是异步的,因此在console.log(data)
有机会完成运行和更新值之前调用readFile
。
将代码更改为此,它将起作用:
var data="valueoutside";
wb.xlsx.readFile(filePath).then(function() {
data="new value";
console.log(data);
});
另一种选择是使用同步调用:
var data="valueoutside";
var contents = wb.xlsx.readFileSync(filePath);
data="new value";
console.log(data);
答案 1 :(得分:0)
将您的console.log(data)
移至then
处理程序中,您将看到更新后的值。
var data="valueoutside";
wb.xlsx.readFile(filePath).then(function(){
data="new value";
console.log(data);
});
一旦承诺解决,then
处理程序中的函数将执行。
答案 2 :(得分:0)
ReadFile是异步函数。所以你应该先写console.log然后功能
var data="valueoutside";
wb.xlsx.readFile(filePath).then(function(){
data="new value";
console.log(data);
});