async/await是Promise的语法糖
程序员文章站
2022-04-30 09:10:10
...
async/await是Promise的语法糖(syntactic sugar ,https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await)。那么,什么是语法糖呢?
语法糖的本质是不改变功能,但是让代码更简洁:
譬如这样写循环可能有点啰嗦:
i = 0;
while (i < 10) {
i++;
}
这样写就很简洁:
i = 0;
while (i < 10) {
i++;
}
两者的逻辑完全一致。可以将上面的for理解为下面的while的语法糖。
所以,在功能层面,async/await无法做到Promise做不到的事情。反之亦然。
下面的hello函数,返回的是一个promise。
async function hello() { return "Hello" };
console.log(hello()); //输出是:Promise {<fulfilled>: "Hello"}
要取得一个promise的值。或者用await,或者用then。两者是完全等价的。
async function hello() { return "Hello" };
hello().then((value) => console.log(value)) // 输出是:hello
或者:
async function hello() {
return "Hello"
}
async function main () {
console.log(await hello()); // 输出是:hello
}
main();
推荐阅读
-
async/await与promise(nodejs中的异步操作问题)
-
详解koa2学习中使用 async 、await、promise解决异步的问题
-
Promise, Generator, async/await的渐进理解
-
python3.6以上 asyncio模块的异步编程模型 async await语法
-
重新认识 async/await 语法糖
-
C#语法——await与async的正确打开方式
-
setTimeout、Promise、Async/Await 的执行顺序
-
js中promise方案、async和await方案和传统方案来处理异步回调的问题
-
Async/Await替代Promise的6个理由
-
【前端】vue前端交互模式-es7的语法结构?async/await