JavaScript 中的 async 和 await 是用于处理异步操作的关键字。让我们一步步理解它们的用法:
-
async函数:-
async函数是使用async关键字声明的函数。 -
它返回一个
Promise对象,即使你在函数中直接返回一个非Promise对象,它也会被自动封装成Promise。 -
异步函数的语法和结构更像是标准的同步函数,但实际上通过事件循环异步执行。
-
示例:
JavaScript
async function demoFunc() { return new Promise((resolve, reject) => { resolve('hello world'); }); }
-
-
await关键字:-
await只能用在async函数内部,否则会报错。 -
它通常用于等待一个返回
Promise的函数执行完毕,并获取其结果。 -
示例:
JavaScript
async function getName() { let name = await printName('jack'); console.log('hello', name); }
-
-
错误处理:
-
如果
await后的Promise抛出错误,你可以使用try和catch来捕获异常。 -
示例:
JavaScript
async function getName() { try { let name = await printName('jack'); console.log('hello', name); } catch (err) { console.log(err, '被catch抓到啦'); } }
-
-
多个异步操作的顺序执行:
-
使用
await可以让异步操作按照顺序执行,避免了繁琐的链式调用。 -
示例:
JavaScript
async function doThis() { const time1 = 1000; const time2 = await step1(time1); const time3 = await step2(time2); const result = await step3(time3); console.log(`result is ${result}`); } -
这样的代码更易读,让你感觉像在写同步代码一样
-