我是 JavaScript 新手,正在學習 Promises。我在弄清楚你什么時候想要創建自己的 Promise 時遇到了一些麻煩。最初我的印象是“執行器函式”(您傳遞給 Promise 建構式的函式)是由瀏覽器 API 異步處理的(如果您的 JavaScript 在瀏覽器中運行)。有了這種理解,您就可以使用您創建的 Promise 在后臺異步執行一些長時間運行的計算。
但是,我了解到,一旦創建 Promise,executor 函式實際上是同步執行的(因此,如果該 executor 函式中有一些長時間運行的代碼,則會阻塞執行的主執行緒)。所以現在我想知道在什么情況下你想定義你自己的 Promise。我的理解是,許多異步函式(例如 fetch)已經回傳了 Promise - 因此將這些函式包裝在 Promise 中是多余的。
有人可以給我一個示例,說明您何時想要創建自己的 Promise?抱歉,如果這是一個愚蠢的問題,或者我的理解不正確,仍在學習。
提前致謝!
uj5u.com熱心網友回復:
我的理解是很多異步函式
fetch,例如已經回傳承諾
實際上,大多數都沒有。setTimeout, addEventListener, 等等——它們都接受回呼,當你想使用Promise 時需要被Promisified 。
已經回傳 Promise 的原生函式的趨勢仍然是最近才出現的,只有像這樣的新 API 才fetch會這樣做。對于圖書館來說,情況類似——現代圖書館將提供承諾,但舊的仍然存在。
除此之外,你是對的 - 你很少需要new Promise, 在普通代碼中你要做的就是承諾鏈接(甚至只是使用async/ await)。但是,new Promise它仍然是所有這些抽象的基礎,并且不會消失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/480681.html
標籤:javascript 异步 承诺
上一篇:顫振異步等待未按順序運行
