ES8 (ES2017) 中 Promise 执行顺序探究

在 JavaScript 中,Promise 是一种处理异步操作的机制。ES6 引入了 Promise,ES8(ES2017)对其进行了更进一步的改进。本文将探究 ES8 中 Promise 的执行顺序,并提供详细的学习和指导意义。

Promise 简介

Promise 是一种用于处理异步操作的机制,它可以在异步操作完成后返回一个值或抛出一个异常。Promise 有三种状态:pending(等待状态)、fulfilled(已完成状态)和 rejected(已拒绝状态)。

Promise 对象有两个主要方法:then()catch()。当 Promise 对象的状态变为 fulfilled 时,then() 方法会被调用,而当状态变为 rejected 时,catch() 方法会被调用。

ES8 中 Promise 的改进

ES8 中对 Promise 进行了改进,主要包括以下两个方面:

1. async/await 关键字

async/await 关键字是 ES8 中对 Promise 的改进之一。它可以更方便地处理异步操作。async 关键字用于定义异步函数,而 await 关键字用于等待异步函数执行完成并返回结果。

上述代码中,getData() 函数使用 async 关键字定义为异步函数,使用 await 等待 fetch() 函数执行完成并返回结果。

2. Promise.prototype.finally() 方法

Promise.prototype.finally() 方法是 ES8 中对 Promise 的另一个改进。它可以在 Promise 对象的状态变为 fulfilled 或 rejected 时都执行一些代码。

上述代码中,finally() 方法会在 then()catch() 方法执行完毕后执行。

ES8 中 Promise 的执行顺序

在 ES8 中,Promise 的执行顺序是按照代码书写顺序执行的。也就是说,先执行的 Promise 对象会先被处理,后执行的 Promise 对象会后被处理。

上述代码中,promise1 对象先被创建并执行,然后是 promise2 对象。then() 方法的执行顺序与 Promise 对象的创建顺序无关,而是按照代码书写顺序执行的。

总结

ES8 中对 Promise 进行了改进,包括 async/await 关键字和 Promise.prototype.finally() 方法。在 ES8 中,Promise 的执行顺序是按照代码书写顺序执行的,先执行的 Promise 对象会先被处理,后执行的 Promise 对象会后被处理。掌握 Promise 的执行顺序对于编写高效的 JavaScript 代码非常重要。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6566e04cd2f5e1655dfd0f0a


纠错
反馈