不是;T的承诺只是回调?

阅读时长 4 分钟读完

前言

在前端开发中,我们常常需要使用异步操作处理一些耗时的任务,例如从服务器获取数据、上传文件等。为了避免阻塞主线程,我们通常会使用回调函数来处理异步操作的结果。而在 JavaScript 中,Promise 作为一种更加灵活和可读性更高的解决方案被广泛使用。本文将探讨 Promise 的基本概念、用法以及如何更好地使用 Promise 来进行前端开发。

Promise 基础知识

Promise 是什么?

Promise 是一种表示异步操作的对象,它可以有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。当 Promise 对象处于 pending 状态时,代表着异步操作正在进行中;当 Promise 对象处于 fulfilled 状态时,表示异步操作已经成功完成并且返回了一个值;而当 Promise 对象处于 rejected 状态时,则代表着异步操作出现了错误。

Promise 如何使用?

要使用 Promise,我们首先需要创建一个 Promise 对象,并定义需要进行的异步操作。Promise 构造函数接受一个函数作为参数,这个函数在 Promise 对象的状态改变时会被调用。这个函数又称为“执行器函数”,它接收两个参数:resolve 和 reject,分别表示异步操作成功和失败时的处理逻辑。一般情况下,我们将异步操作的代码放在执行器函数中,并根据异步操作的结果调用 resolve 或 reject 函数。

-- -------------------- ---- -------
----- ------- - --- ----------------- ------- -- -
  -- ----
  ------------- -- -
    ----- --------- - --------------
    -- ---------- - ---- -
      -------------------
    - ---- -
      ---------- --------------
    -
  -- ------
---

创建好 Promise 对象后,我们可以使用 then 方法或 catch 方法来处理 Promise 对象的状态变化。then 方法接受两个可选参数:第一个参数为成功时的回调函数,第二个参数为失败时的回调函数;catch 方法则是 then 方法的简化形式,只传入失败时的回调函数。

Promise 进阶技巧

Promise.all 和 Promise.race

在实际开发中,我们可能需要同时发起多个异步请求,并在所有请求都完成后再进行下一步处理,或者只要有一个请求完成就立即进行下一步处理。这时候,Promise 提供了 Promise.all 和 Promise.race 两个方法来帮助我们进行处理。

Promise.all 接受一个包含多个 Promise 对象的数组作为参数,当所有 Promise 对象都处于 fulfilled 状态时,Promise.all 返回一个数组,其中包含了所有的异步操作的结果;如果有任何一个 Promise 对象处于 rejected 状态,Promise.all 则会立即返回一个 rejected 状态的 Promise 对象。

Promise.race 接受一个包含多个 Promise 对象的数组作为参数,当其中任意一个 Promise 对象状态发生改变时,Promise.race 就会返回这个 Promise 对象的状态。例如下面的代码中,Promise

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/8577

纠错
反馈