文章主要闡明如何取出[[PromiseValue]]亏推。
[[PromiseValue]]是個(gè)內(nèi)部變量阐污,外部無法得到叔遂,只能在then中獲取微渠。
Promise 是異步編程的一種解決方案同规,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大循狰。它由社區(qū)最早提出和實(shí)現(xiàn),ES6 將其寫進(jìn)了語言標(biāo)準(zhǔn)券勺,統(tǒng)一了用法绪钥,原生提供了Promise對象。
所謂Promise关炼,簡單說就是一個(gè)容器程腹,里面保存著某個(gè)未來才會結(jié)束的事件(通常是一個(gè)異步操作)的結(jié)果。從語法上說儒拂,Promise 是一個(gè)對象寸潦,從它可以獲取異步操作的消息。Promise 提供統(tǒng)一的 API侣灶,各種異步操作都可以用同樣的方法進(jìn)行處理甸祭。
Promise對象代表一個(gè)異步操作,有三種狀態(tài):pending(進(jìn)行中)褥影、fulfilled(已成功)和rejected(已失敵鼗А)。只有異步操作的結(jié)果凡怎,可以決定當(dāng)前是哪一種狀態(tài)校焦,任何其他操作都無法改變這個(gè)狀態(tài)。這也是Promise這個(gè)名字的由來统倒,它的英語意思就是“承諾”寨典,表示其他手段無法改變。
Promise實(shí)例生成以后房匆,可以用then方法分別指定resolved狀態(tài)和rejected狀態(tài)的回調(diào)函數(shù)耸成。
then方法可以接受兩個(gè)回調(diào)函數(shù)作為參數(shù)。第一個(gè)回調(diào)函數(shù)是Promise對象的狀態(tài)變?yōu)閞esolved時(shí)調(diào)用浴鸿,第二個(gè)回調(diào)函數(shù)是Promise對象的狀態(tài)變?yōu)閞ejected時(shí)調(diào)用井氢。其中,第二個(gè)函數(shù)是可選的岳链,不一定要提供花竞。這兩個(gè)函數(shù)都接受Promise對象傳出的值作為參數(shù)。