」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > .then(function(a){ return a; }) 是 Promises 的 No-Op 嗎?

.then(function(a){ return a; }) 是 Promises 的 No-Op 嗎?

發佈於2024-11-16
瀏覽:136

Is .then(function(a){ return a; }) a No-Op for Promises?

.then(function(a){ return a; }) 是 Promises 的 No-Op 嗎?

在 Promise 領域,就出現了 .then(function(a){ return a; }) 是否為空操作的問題。讓我們闡明這個奇怪的查詢:

是的,它通常是一個無操作。

相關程式碼接收前一個承諾的回傳值透過傳遞給 .then() 的函數進行連結。但是,如果函數僅傳回輸入 a,則它實際上繞過了 Promise 結果的任何處理或轉換。這使得它成為承諾管道中無害但不必要的額外步驟。

為什麼要這樣寫?

這可能是拼字錯誤或早期誤解的遺留物承諾。當引入 Promise 時,一些開發人員錯誤地認為 .then() 需要回傳一個 Promise 來繼續這條鏈。因此,他們添加了這個多餘的 .then() 調用,以確保返回的值始終保持承諾,即使它與輸入相同。

返回.then() 和省略它

雖然在語義上是等價的,但返回.then() 和省略它之間存在細微的區別:

  • 新的Promise 實例: .then () 建立一個新的Promise實例,而忽略它則重複使用原始實例。然而,這種區別通常是無關緊要的。
  • Thenable-ness 檢查: 使用 .then(),將檢查傳回的值以確定它是否為 Promise。省略 .then() 會跳過此檢查。

邊緣情況

在極少數情況下,.then(function(a){ return a; }) 可能會有不尋常的行為:

  • 如果回傳值在履行後突然變成一個Promise,.then() 會等待它。
  • 它傳回一個不同的 Promise 對象,這對於共享迴避。然而,這是一個利基用例。

結論

一般來說, .then(function(a){ return a; }) 是一個否-op 不會給承諾鏈增加任何價值。除非有令人信服的理由使用它,例如避免共享承諾或處理模糊的 thenable 相關行為,否則應將其省略。

最新教學 更多>
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-17
  • 您是否應該異步加載腳本以提高網站效能?
    您是否應該異步加載腳本以提高網站效能?
    非同步腳本載入以提高網站效能在現今的Web 開發領域,優化頁面載入速度對於使用者體驗和搜尋引擎優化至關重要。提高效能的有效技術之一是非同步載入腳本,使瀏覽器能夠與其他頁面元素並行下載腳本。 傳統方法是將腳本標籤直接放置在 HTML 文件中,但這種方法常常會造成瓶頸因為瀏覽器必須等待每個腳本完成載入才...
    程式設計 發佈於2024-11-17
  • 如何將 Python 日期時間物件轉換為自紀元以來的毫秒數?
    如何將 Python 日期時間物件轉換為自紀元以來的毫秒數?
    在Python 中將日期時間物件轉換為自紀元以來的毫秒數Python 的datetime 物件提供了一種穩健的方式來表示日期和時間。但是,某些情況可能需要將 datetime 物件轉換為自 UNIX 紀元以來的毫秒數,表示自 1970 年 1 月 1 日協調世界時 (UTC) 午夜以來經過的毫秒數。...
    程式設計 發佈於2024-11-17
  • 如何在 Python 中使用特定前綴重命名目錄中的多個文件
    如何在 Python 中使用特定前綴重命名目錄中的多個文件
    使用Python重命名目錄中的多個檔案當面臨重命名目錄中檔案的任務時,Python提供了一個方便的解決方案。然而,處理錯綜複雜的文件重命名可能具有挑戰性,特別是在處理特定模式匹配時。 為了解決這個問題,讓我們考慮一個場景,我們需要從檔案名稱中刪除前綴“CHEESE_”,例如“CHEESE_CHEES...
    程式設計 發佈於2024-11-17
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-17
  • Java中的同步靜態方法如何處理執行緒同步?
    Java中的同步靜態方法如何處理執行緒同步?
    Java 中的同步靜態方法:解鎖物件類別困境Java 文件指出,在同一物件上多次呼叫同步方法不會交錯。但是,當涉及靜態方法時會發生什麼?靜態方法不與具體物件關聯,那麼synchronized關鍵字是指物件還是類別呢? 分解答案根據Java語言規範(8.4.3.6),同步方法在執行之前取得監視器。對於...
    程式設計 發佈於2024-11-16
  • 如何使用 Python 取得目錄中按建立日期排序的檔案清單?
    如何使用 Python 取得目錄中按建立日期排序的檔案清單?
    使用Python 獲取按創建日期排序的目錄列表使用Python 獲取按創建日期排序的目錄列表導航目錄時,經常需要獲取排序後的內容列表根據特定標準,例如建立日期。在Python中,這個任務可以輕鬆完成。 建議方法:import glob import os search_dir = "/my...
    程式設計 發佈於2024-11-16
  • 如何在初始頁面載入後動態載入 Less.js 規則?
    如何在初始頁面載入後動態載入 Less.js 規則?
    動態載入Less.js規則將Less.js合併到網站中可以增強其樣式功能。然而,遇到的一個限制是需要在 Less.js 腳本之前載入所有 LESS 樣式表。當某些樣式需要在初始頁面載入後動態載入時,這可能會帶來挑戰。 目前限制目前,Less.js 規定載入外部的順序樣式表和腳本起著至關重要的作用。顛...
    程式設計 發佈於2024-11-16
  • 如何在 PHP 中清除瀏覽器快取?
    如何在 PHP 中清除瀏覽器快取?
    在PHP 中清除瀏覽器快取您可能會遇到需要清除瀏覽器快取以強制瀏覽器重新載入最新版本的情況您的網頁。當您開發 Web 應用程式並且希望確保使用者看到您所做的最新變更時,這尤其有用。 清除瀏覽器快取的PHP 代碼要使用PHP清除瀏覽器緩存,可以使用以下程式碼:header("Cache-Co...
    程式設計 發佈於2024-11-16
  • 如何在 MySQL PDO 查詢中正確使用 LIKE 和 BindParam?
    如何在 MySQL PDO 查詢中正確使用 LIKE 和 BindParam?
    在MySQL PDO 查詢中正確使用LIKE 和BindParam當嘗試在MySQL PDO 查詢中使用BindParam 執行LIKE 搜尋時,必須使用正確的語法以確保準確的結果。 優化語法要使用bindParam匹配以“a”開頭的用戶名,正確的語法是:$term = "a%"...
    程式設計 發佈於2024-11-16
  • 如何使用 Selenium 和 Python 更改 Chrome 中的用戶代理程式?
    如何使用 Selenium 和 Python 更改 Chrome 中的用戶代理程式?
    使用Selenium 更改Chrome 中的用戶代理在自動化需要特定瀏覽器配置的任務時,更改Chrome 中的用戶代理至關重要。這可以透過使用 Selenium 和 Python 來實現。 若要啟用使用者代理開關,請修改選項設定:from selenium import webdriver from...
    程式設計 發佈於2024-11-16
  • .then(function(a){ return a; }) 是 Promises 的 No-Op 嗎?
    .then(function(a){ return a; }) 是 Promises 的 No-Op 嗎?
    .then(function(a){ return a; }) 是 Promises 的 No-Op 嗎? 在 Promise 領域,就出現了 .then(function(a){ return a; }) 是否為空操作的問題。讓我們闡明這個奇怪的查詢:是的,它通常是一個無操作。 相關程式碼接收前一...
    程式設計 發佈於2024-11-16
  • 如何在 Matplotlib 中建立自訂色彩圖並新增色標?
    如何在 Matplotlib 中建立自訂色彩圖並新增色標?
    建立自訂顏色圖並合併色標要建立自己的顏色圖,一種方法是利用 matplotlib.colors 模組中的 LinearSegmentedColormap 函數。這種方法更簡單,並產生連續的色標。 import numpy as np import matplotlib.pyplot as plt i...
    程式設計 發佈於2024-11-16
  • 如何用PHP取得客戶端的當地時間?
    如何用PHP取得客戶端的當地時間?
    在PHP 中檢索客戶端的本地時間在PHP 應用程式中處理日期和時間時,必須記住PHP 主要運行於伺服器端。因此,預設情況下,與時間相關的函數(如 date())會根據伺服器的位置和時區提供時間。但是,在需要捕獲客戶端(用戶)本地時間的情況下,需要採用替代方法。 這裡有一個使用 JavaScript ...
    程式設計 發佈於2024-11-16
  • 所有可變參數函數都會將“float”參數提升為“double”嗎?
    所有可變參數函數都會將“float”參數提升為“double”嗎?
    在可變參數函數中將浮點參數提升為Double在先前的討論中,注意到printf() 將會浮點參數提升為在接受之前加倍。這就提出了一個問題:所有可變參數函數都執行此提升嗎? 可變參數參數提升是的,根據 C99 和 C 標準,浮點參數傳遞給可變參數函數提升為雙精度。 標準規範C99(第6.5.2.2 節...
    程式設計 發佈於2024-11-16

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3