async 函数一定会返回一个 promise 对象。如果一个 async 函数的返回值看起来不是 promise,那么它将会被隐式地包装在一个 promise 中。 如 async function foo() { return 1; } 等价于 function foo() { return Promise.resolve(1); }
在 await 表达式之后的代码可以被认为是存在在链式调用的 then 回调中,多个 await 表达式都将加入链式调用的 then 回调中,返回值将作为最后一个 then 回调的返回值。
执行代码理解
function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); } async function f1() { console.log("???"); var x = await resolveAfter2Seconds(10); console.log(x); // 10 } f1(); console.log(3); //对于这段代码,加深对async await的理解,假如在wait一个结果,并不会在这里阻塞,使用多线程理解的话,就是把这个交给一个新的线程来执行,自己继续执行其他事情去了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步