JavaScript 异步函数执行顺序详解:async/await 和 Promise
输出的顺序为:
- 'script start'
- 'async1 start'
- 'async2'
- 'promise1'
- 'script end'
- 'async1 end'
- 'promise2'
这里的理由是因为:
- 首先输出'script start'。
- 调用async1()函数,输出'async1 start'。
- 在async1()函数中调用async2()函数,输出'async2'。
- 因为有一个异步的Promise对象,所以输出'promise1'。
- 因为Promise对象被resolve了,所以输出'promise2'。
- async2()函数执行完毕后,async1()函数继续执行,输出'async1 end'。
- 最后输出'script end'。
代码示例:
async function async1() {
console.log('async1 start');
await async2();
console.log('async1 end');
}
async function async2() {
console.log('async2');
}
console.log('script start')
async1();
new Promise(function (resolve) {
console.log('promise1');
resolve();
}).then(function () {
console.log('promise2');
});
console.log('script end')
解释:
async/await语法糖:async函数内部使用await关键字等待异步操作完成,然后继续执行后面的代码。Promise对象: 代表一个异步操作,可以处于三种状态:pending(进行中)、fulfilled(已完成)或 rejected(已失败)。then()方法: 用于处理 Promise 对象成功完成时的回调函数。
总结:
JavaScript 中的异步操作使用 async/await 和 Promise 可以更好地管理异步代码的执行顺序,提高代码可读性和可维护性。
原文地址: https://www.cveoy.top/t/topic/nkhT 著作权归作者所有。请勿转载和采集!