回調函數真正的問題在于他剝奪了我們使用 return 和 throw 這些關鍵字的能力。而 Promise 很好地解決了這一切。
2015 年 6 月,ECMAScript 6 的正式版 終于發(fā)布了。
ECMAScript 是 JavaScript 語言的國際標準,JavaScript 是 ECMAScript 的實現。ES6 的目標,是使得 JavaScript 語言可以用來編寫大型的復雜的應用程序,成為企業(yè)級開發(fā)語言。
概念
ES6 原生提供了 Promise 對象。
所謂 Promise,就是一個對象,用來傳遞異步操作的消息。它代表了某個未來才會知道結果的事件(通常是一個異步操作),并且這個事件提供統(tǒng)一的 API,可供進一步處理。
Promise 對象有以下兩個特點。
(1)對象的狀態(tài)不受外界影響。Promise 對象代表一個異步操作,有三種狀態(tài):Pending(進行中)、Resolved(已完成,又稱 Fulfilled)和 Rejected(已失敗)。只有異步操作的結果,可以決定當前是哪一種狀態(tài),任何其他操作都無法改變這個狀態(tài)。這也是 Promise 這個名字的由來,它的英語意思就是「承諾」,表示其他手段無法改變。
(2)一旦狀態(tài)改變,就不會再變,任何時候都可以得到這個結果。Promise 對象的狀態(tài)改變,只有兩種可能:從 Pending 變?yōu)?Resolved 和從 Pending 變?yōu)?Rejected。只要這兩種情況發(fā)生,狀態(tài)就凝固了,不會再變了,會一直