谁能帮我用这段代码使console.log(var1)工作时,var1被设置在一个函数,需要一点时间。下面是要复制的基本问题:
<script>
var var1;
async function loadSuccess() {
await setTimeout(() => {
console.log("waiting 5000 ms");
}, 5000);
var1 = "success";
}
loadSuccess();
</script>
<script>
console.log(var1);
</script>
由于loadSuccess()需要额外的5000ms来完成,console.log(var1)打印未定义,因为它在loadSuccess()完成之前运行。
有没有人可以帮助修复这个例子中的代码,使它console.log(var1)返回"success"在第二个剧本里?
这可能有帮助:
var var1;
function loadSuccess() {
return new Promise((resolve, reject) => {
console.log("waiting 5000 ms");
setTimeout(() => {
var1 = "success";
resolve(var1);
}, 5000);
});
}
loadSuccess().then((var1) => document.write(var1));
另外,setTimeout
不是一个异步函数,所以你不需要async/await。