📜  JavaScript Promise finally() 方法(1)

📅  最后修改于: 2023-12-03 15:01:38.403000             🧑  作者: Mango

JavaScript Promise finally() 方法

简介

Promise.finally() 方法返回一个新的Promise,当promise无论成功或失败都会执行指定的回调函数,不过需要注意的是,finally不传递任何参数,仅仅用于执行操作后触发副作用,如清除之前的状态等。

语法
promise.finally(onFinally);

参数说明:

  • onFinally: 一个函数,在Promise结束时必定会执行,无论Promise的结果是resolved还是rejected。
示例
const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    const success = Math.random() > 0.5;
    if (success) {
      resolve('Success!');
    } else {
      reject('Error!');
    }
  }, 1000);
});

promise
  .then(result => {
    console.log(result);
  })
  .catch(error => {
    console.error(error);
  })
  .finally(() => {
    console.log('Promise completed!');
  });

输出结果如下:

Success! // 成功时的结果
Promise completed! // 无论成功和失败都会执行
注意事项
  • Promise.finally() 方法不会改变 Promise 状态,还是返回结果,但可以做一些额外的工作,以最后触发副作用。
  • finally方法不接收任何参数,也不会判断 Promise 的成功或失败,它只是 Promise 执行完毕后的一种清理情况,无论 Promise 状态如何都会执行。
  • finally方法会返回一个 Promise 对象,所以可以使用 then() 或 catch() 方法正常处理 Promise 结果或错误。
结语

Promise.finally() 方法的作用是在 Promise 最终执行完毕后执行指定函数,使得可以在 Promise 执行完毕后进行状态检查或副作用触发。在实现上,finally在then和catch之后执行,但不会改变Promise的状态,此方法在经典的Promise API已经普遍被支持。