gpt4 book ai didi

javascript - 为什么异步函数中的 setTimeout 需要在新的 Promise 中再次包装?

转载 作者:行者123 更新时间:2023-11-30 11:09:40 25 4
gpt4 key购买 nike

<分区>

为什么需要在异步函数中使用新的 Promise?

我想了解为什么我的 async/await 代码无法根据 [async-await] 工作:( https://javascript.info/async-await )

如果我简单地将一个函数包装在 async 中,我会得到一个 Promise。就像在示例中一样:

async function f() {
return 1;
}

f().then(alert); // 1

但是当我像这样包装 setTimeout 代码时,它不起作用:

let hello = await this.sleep_not_Working();
async sleep_not_Working()
{
setTimeout( ()=> {
return "hello";
}, 3000);
}

我知道这段代码可以工作,我只是不明白为什么???

let hello = await this.sleep_Work();
async sleep_Work()
{
return new Promise((resolve)=>( setTimeout(()=> {
resolve("hello");
}, 3000)));
}

就像上面的例子一样,我期望得到一个 promise ,因为我将它包装在异步 header 中。

希望任何 promise 都是真实的:)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com