首頁 >web前端 >js教程 >建構函數應該回傳 Promise 嗎?

建構函數應該回傳 Promise 嗎?

Patricia Arquette
Patricia Arquette原創
2024-12-18 22:37:19788瀏覽

Should Constructor Functions Return Promises?

建構函式與 Promise:實用方法

考慮為具有各種非同步操作的部落格平台建立建構函式的場景。問題出現了:讓建構函數傳回 Promise 而不是它要建立的物件是否明智?

回傳Promise 的優點:

  • 保證初始化: Promise 允許使用者連結在之後執行的then 處理程序構造函數已完成執行。這可以確保在任何程式碼嘗試存取該物件之前該物件已完全初始化。

回傳Promise 的缺點:

  • new 運算子的破壞: Promise 破壞了構造函數的傳統行為,破壞了構造函數的傳統行為,破壞了構造函數的傳統行為,破壞了構造函數的傳統行為,破壞了構造函數的傳統行為,破壞了構造函數的傳統行為它會傳回新建立的物件。這可能會導致混亂和潛在的錯誤。
  • 有限的立即存取:傳回的 Promise 表示建構函式所建立的物件不能立即可用。當假設構造後可以直接存取它時,使用者可能會遇到問題。

替代方法:

不要從建構子回傳Promise,而是考慮使用一個Promise以下策略之一:

  • 單獨初始化方法: 建立一個在建構後明確初始化物件的方法。這允許構造函數立即傳回對象,同時確保它在使用前完全初始化:
var engine = new Engine({path: '/path/to/posts'});
engine.init().then(function() {
  // Object is now initialized.
});
  • 靜態工廠函數:使用靜態工廠函數非同步建立和初始化對象。這種方法在資料獲取方面提供了更大的靈活性,並簡化了構造函數:
Engine.create({path: '/path/to/posts'}).then(function(engine) {
  // Object is now initialized.
});

結論:

雖然從構造函數傳回Promise 可以提供某些好處,但通常被認為是一種不好的做法。透過遵循建議的替代方法,您可以在不破壞預期建構函數行為的情況下實現所需的功能。

以上是建構函數應該回傳 Promise 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn