async
async 和 await 是用来处理异步的。即你需要异步像同步一样执行,需要异步返回结果之后,再往下依据结果继续执行。
async 是“异步”的简写,而 await 可以认为是 async wait 的简写。
async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。
当 async 函数没有返回值时,返回 Promise.resolve(undefined).
<script> async function testAsync(){ return 'Hello world'; } var result = testAsync(); console.log(result); // Promise {<fulfilled>: 'Hello world'} result.then((v) => { console.log(v); // Hello world }) /* function testAsync() { return 'Hello World'; } new Promise(function (resolve) { resolve(testAsync()); }).then(function (value) { console.log(value); // Hello World }); */ </script>
await
await 只能放在 async 函数内部使用
await 用于一个异步操作之前,表示要“等待”这个异步操作的返回值。
await 也可以用于一个同步的值。
如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。
如果它等到的是一个 Promise 对象,那 await 会阻塞后面的代码,等着 Promise 对象 resolve,
然后得到 resolve 的值,作为 await 表达式的运算结果。
同步代码
<script> const a = await 'Hello World'; // 上述写法会报错的:await is only valid in async functions and the top level bodies of modules // 相当于 const a = await Promise.resolve('Hello World'); // 所以直接写同步代码即可,不需要 await 关键字 const a = 'Hello World'; </script>
异步代码
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。