【发布时间】:2023-01-08 00:59:33
【问题描述】:
To keep variables in background.js in chrome extension 我需要重新初始化一些全局变量,遇到了一些困难。
这是我想说明问题的代码(fiddle):
var temp = null;
function someTimeConsumingThing() {
return new Promise(function(resolve,reject) {
setTimeout(resolve, 2000);
temp = 10;
})
}
async function a(){
if(temp==null){
await someTimeConsumingThing();
}
return temp
}
function b(){
let localTemp = a();
console.log(localTemp);
}
b();
在上面的代码 sn-p 中,temp 变量有时会为 null,为了确保 temp 不为 null,我应该调用一个异步函数 someTimeConsumingThing。正如我们所见,console.log 输出了一个 Promise 而不是 10;如果我在 a() 之前添加 await 就会出错:
未捕获的语法错误:await 仅在异步函数和模块的顶层主体中有效”
我该如何解决这个问题?我在这里阅读了许多相关但无用的答案,我不知道如何优化我的搜索输入以获得最相关的问题。这个问题对于 JS 专家来说是非常幼稚的,而且这个网站上肯定有可用的答案。
【问题讨论】:
-
你为什么(含蓄地)反对将
b()也标记为async,这样你就可以成功地await调用a()?
标签: javascript asynchronous async-await promise