输出的顺序为:

  1. 'script start'
  2. 'async1 start'
  3. 'async2'
  4. 'promise1'
  5. 'script end'
  6. 'async1 end'
  7. 'promise2'

这里的理由是因为:

  1. 首先输出'script start'。
  2. 调用async1()函数,输出'async1 start'。
  3. 在async1()函数中调用async2()函数,输出'async2'。
  4. 因为有一个异步的Promise对象,所以输出'promise1'。
  5. 因为Promise对象被resolve了,所以输出'promise2'。
  6. async2()函数执行完毕后,async1()函数继续执行,输出'async1 end'。
  7. 最后输出'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/awaitPromise 可以更好地管理异步代码的执行顺序,提高代码可读性和可维护性。

JavaScript 异步函数执行顺序详解:async/await 和 Promise

原文地址: https://www.cveoy.top/t/topic/nkhT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录