React.js 中的 Promise 是什麼?


在 React 中,有多種方法可以處理非同步資料,但使用 Promise 是最流行的方法之一。Promise 是一個表示非同步操作的物件。換句話說,它代表一個將來會解析的值。

在這篇文章中,我們將探討 Promise 的重要性、其底層 API 以及在使用它們時需要注意的一些常見陷阱。我們還將提供一個簡單的示例,說明如何使用 Promise 管理非同步程式設計。

在閱讀完這篇文章後,您將更多地瞭解如何在 React.js 中使用 Promise,並能夠將其應用到您自己的專案中。

因此,事不宜遲,讓我們開始吧!

React.js 中的 Promise

與其他程式語言中的 Promise 類似,React 中的 Promise 也有類似的工作原理。一個描述非同步操作結果的物件稱為 Promise,它有助於管理非同步操作(如資料獲取)。由於 React 集成了 Promise API,因此使用 Promise 非常簡單。

建立 Promise 時,它處於 pending(掛起)狀態。這意味著非同步過程仍在進行中。根據非同步操作的結果,Promise 將被 fulfilled(完成)或 rejected(拒絕)。如果非同步過程成功完成,則 Promise 將被 fulfilled。如果非同步過程失敗,則 Promise 將被 rejected。

透過使用 Promise,我們可以看到哪些函式是相互依賴的,從而使程式碼更容易理解和除錯,而無需遍歷冗長的巢狀函式呼叫列表。

Promise 在 React.js 中是如何工作的?

React 有一種內建的方式來處理 Promise,稱為 Promise 渲染模型。此模型允許您以宣告方式處理非同步資料。在此模型中,您只需要關注三件事:

  • 載入狀態:這是從非同步操作中獲取資料時。

  • 錯誤狀態:這是獲取資料時發生錯誤時。

  • 資料本身:這是非同步操作解析的值。

這看起來可能很多,但 Promise 使您可以輕鬆處理所有這些狀態,而不會陷入細節。

當我們發出請求時,我們並不總是知道何時會收到響應。使用 Promise,我們可以編寫程式碼來等待響應返回,然後對資料執行某些操作。

Promise 在 JavaScript 中通常是什麼樣子的?請參見此示例 -

function doSomething() { var promise = new Promise(function(resolve, reject) { setTimeout(function() { resolve('Success!'); // Yay! Everything went well! }, 2000); }); return promise; // This is what we'll use later. Promise that something will happen!}

當我們建立 Promise 時,我們會傳遞一個“執行器函式”——一個將來在呼叫 Promise 時會被呼叫的函式。執行器函式有兩個引數:resolve 和 reject。可以使用 resolve 函式來解析 Promise,使用 reject 函式來拒絕 Promise。

以下示例展示瞭如何在 React 中使用帶有 .then 和 .catch 的 Promise -

doSomething().then( function(result) { console.log(”The function executed successfully!”) }).catch

當 Promise 被 fulfilled 時,.then() 方法將執行,並將 Promise 的結果傳遞給它(即從外部源載入的資料),然後執行 then() 方法內部的任何函式。

如果 Promise 失敗,則 .catch() 方法將執行,該方法捕獲錯誤,通常在 React.js 中用於錯誤處理。

使用 Promise 的不同方法

在 React.js 中,有幾種不同的方法可以使用 Promise,例如使用 fetch() 和 async/await。這兩種方法的目標相同——使處理非同步程式碼更簡單、更高效。

使用 Promise 最常見的方法之一是從 API 載入資料,這就是我們使用 async 和 await 的地方。

當您進行 API 呼叫時,通常必須等待伺服器響應,然後才能對資料執行任何操作。如果您不小心,這可能會導致問題,但使用 Promise,您可以透過在嘗試使用資料之前等待 API 呼叫完成來避免這些問題。

您可以使用 Promise 的另一種方法是處理錯誤。當您進行 API 呼叫時,始終存在失敗的可能性,在這種情況下,您可以始終使用 .catch() 方法來處理錯誤。

為什麼要使用 Promise?

簡而言之,它們使處理 JavaScript 中的非同步程式碼變得更加容易。

非同步資料是指無法立即獲取的資料。載入可能需要一點時間。在 React 中處理非同步資料時,通常需要等待滿足特定條件才能繼續。

這就是 Promise 的用武之地。Promise 是在 React.js 中處理非同步操作的好方法,它們可以幫助您建立更具響應性和可擴充套件性的應用程式。使用 Promise,您可以避免在處理非同步程式碼時經常出現的回撥地獄。

在 React.js 中使用 Promise 有幾個好處 -

  • 以更有效和組織化的方式管理非同步程式碼。

  • 避免“回撥地獄”,並保持程式碼整潔易讀。Promise 也可以連結在一起,因此您可以輕鬆建立複雜的非同步互動。

  • 幫助您並行地從多個來源載入資料,並且它們可以使取消非同步請求變得更容易。

結論

總之,Promise 在 React 應用程式中發揮著重要作用。它們可以幫助您使程式碼更具可讀性,並更容易除錯。Promise 還讓您更好地控制應用程式如何處理非同步程式碼。

更新於: 2022-12-07

24K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.