📅  最后修改于: 2023-12-03 14:52:22.681000             🧑  作者: Mango
在编写异步代码时,我们经常需要等待异步函数执行完毕后才能继续执行下面的代码。在 JS 中,我们可以使用 Promise
或者 async/await
的方式来等待异步函数的执行。本文将简述如何使用这两种方式来等待异步函数的执行。
Promise
是一种异步编程的解决方案,可以有效地解决回调地狱的问题。使用 Promise
来等待异步函数的执行也非常简单:
function asyncFunc() {
return new Promise((resolve, reject) => {
// 异步函数的代码
// 执行完成后调用 resolve() 或 reject()
});
}
asyncFunc().then(() => {
// 异步函数执行完成后的代码
}).catch(() => {
// 异步函数执行失败后的代码
});
上述代码中,我们通过创建一个 Promise
对象来封装异步函数的执行,并在异步函数执行完成后调用 resolve()
或 reject()
来通知 Promise
对象异步函数的执行结果。然后使用 then()
或 catch()
来等待异步函数的执行结果。
async/await
是 ES2017 中引入的一种语法,可以更加方便地编写异步代码。使用 async/await
来等待异步函数的执行也非常简单:
async function asyncFunc() {
// 异步函数的代码
// 执行完成后返回结果
}
(async function() {
await asyncFunc();
// 异步函数执行完成后的代码
})();
上述代码中,我们使用 async/await
的语法来定义异步函数,在异步函数中执行异步操作并返回结果。然后在调用异步函数的代码块中使用 await
关键字来等待异步函数的执行结果,然后执行异步函数执行完成后的代码。
注意:使用 await
关键字的代码块必须在一个 async
函数内部执行,所以我们使用了自执行的 async
函数来包裹代码块。
以上就是在 JS 中调用外部异步函数的等待的两种方式:Promise
和 async/await
。使用这两种方式可以更加方便地编写异步代码,并且可以避免回调地狱的问题。如果你在编写异步代码时遇到了问题,不妨尝试使用这两种方式。