得到promise
所謂 Promise,就是一個物件,用來傳遞非同步操作的訊息。它代表了某個未來才會知道結果的事件(通常是一個非同步操作),並且這個事件提供統一的 API,可供進一步處理。
Promise 物件有以下兩個特點。
(1)物件的狀態不受外界影響。Promise 物件代表一個非同步操作,有三種狀態:Pending(進行中)、Resolved(已完成,又稱 Fulfilled)和 Rejected(已失敗)。只有非同步操作的結果,可以決定當前是哪一種狀態,任何其他操作都無法改變這個狀態。這也是 Promise 這個名字的由來,它的英語意思就是「承諾」,表示其他手段無法改變。
(2)一旦狀態改變,就不會再變,任何時候都可以得到這個結果。Promise 物件的狀態改變,只有兩種可能:從 Pending 變為 Resolved 和從 Pending 變為 Rejected。只要這兩種情況發生,狀態就凝固了,不會再變了,會一直保持這個結果。就算改變已經發生了,你再對 Promise 物件新增回撥函式,也會立即得到這個結果。這與事件(Event)完全不同,事件的特點是,如果你錯過了它,再去監聽,是得不到結果的。
有了 Promise 物件,就可以將非同步操作以同步操作的流程表達出來,避免了層層巢狀的回撥函式。此外,Promise 物件提供統一的介面,使得控制非同步操作更加容易。
Promise 也有一些缺點。首先,無法取消 Promise,一旦新建它就會立即執行,無法中途取消。
其次,如果不設定回撥函式,Promise 內部丟擲的錯誤,不會反應到外部。
第三,當處於 Pending 狀態時,無法得知目前進展到哪一個階段(剛剛開始還是即將完成)。
Promise 建構函式接受一個函式作為引數,該函式的兩個引數分別是 resolve 方法和 reject 方法。
如果非同步操作成功,則用 resolve 方法將 Promise 物件的狀態,從「未完成」變為「成功」(即從 pending 變為 resolved);
如果非同步操作失敗,則用 reject 方法將 Promise 物件的狀態,從「未完成」變為「失敗」(即從 pending 變為 rejected)。
相關文章
- Promise和Promise的方法Promise
- promisePromise
- Promise規範以及手寫PromisePromise
- vb中從域名得到IP及從IP得到域名 (轉)
- 淺談Promise之按照Promise/A+規範實現Promise類Promise
- 得到檔案大小
- 解析域名得到IP
- webservice得到自身IPWeb
- promise專題--手寫promise03Promise
- 學習Promise && 簡易實現PromisePromise
- Promise之你看得懂的PromisePromise
- 一、promisePromise
- My PromisePromise
- Javascript — PromiseJavaScriptPromise
- Promise then() 方法Promise
- Promise初探Promise
- 深入 PromisePromise
- promise容器Promise
- Promise使用Promise
- Promise 概述Promise
- Promise in ChakraPromise
- 你好,promisePromise
- promise with asyncPromise
- Promise in JavascriptPromiseJavaScript
- Promise原理講解 && 實現一個Promise物件 (遵循Promise/A+規範)Promise物件
- 基於promise /A+規範手寫promisePromise
- 手撕遵循 Promise/A+ 規範的 PromisePromise
- 如何使用Promise.race() 和 Promise.any() ?Promise
- 從手寫一個符合Promise/A+規範Promise來深入學習PromisePromise
- 【Java】得到本機IPJava
- 【Java】從域名得到ipJava
- session無法得到值Session
- 如何得到Oracle Patch (zt)Oracle
- 你能手寫一個Promise嗎?Yes I promise。Promise
- jquery Promise和ES6 Promise的區別jQueryPromise
- Promise進階——如何實現一個Promise庫Promise
- JavaScript 在 Promise.then 方法裡返回新的 PromiseJavaScriptPromise
- async/await 和 promise/promise.all 的示例AIPromise