我如何在第二个脚本元素中等待函数完成?



谁能帮我用这段代码使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。

最新更新