promise 是es6 的標(biāo)準(zhǔn)函數(shù)现喳,主要是解決執(zhí)行函數(shù)當(dāng)中的回調(diào)問題凯傲,相對(duì)于async,async只是一套解決回調(diào)的語法糖嗦篱,而promise就是協(xié)議的方案冰单,在未來環(huán)境當(dāng)中,不用require就可以使用灸促。
對(duì)于當(dāng)前版本以第五版為主诫欠,不過promise的原理還是比較簡(jiǎn)單,社區(qū)已經(jīng)有很多庫進(jìn)行模擬浴栽,下面列了一下
本來打算展開寫自己實(shí)現(xiàn)一個(gè)promise荒叼,但發(fā)現(xiàn)在網(wǎng)上已經(jīng)有一個(gè)很好的教程了,我覺得自己沒能力寫得比他好典鸡,所以我直接貼出來被廓,大家可以參考 http://www.html-js.com/article/1739
關(guān)于promise 的思考
相對(duì)于async,promise的實(shí)現(xiàn)和細(xì)節(jié)實(shí)在復(fù)雜太多了萝玷,從promise的代碼量里面來看足足是async實(shí)現(xiàn)的幾倍嫁乘,而且學(xué)習(xí)成本也會(huì)比async高,這是一點(diǎn)球碉,另外一點(diǎn)蜓斧,函數(shù)需要封裝成promise形式才能搞保證鏈?zhǔn)秸{(diào)用,雖然一般promise模塊睁冬,都會(huì)為標(biāo)準(zhǔn)的node.js函數(shù)提供挎春,快捷的封裝函數(shù),但跟async的拿來就有的使用體驗(yàn)來說,還是有差距直奋,但是promise還是有很吸引人的殺手锏狼荞,es6的標(biāo)準(zhǔn)函數(shù),由javascript的引擎直接提供帮碰,性能肯定要比async好相味,而且不用引入一個(gè)async模塊,在瀏覽器上表現(xiàn)肯定會(huì)更加好殉挽,關(guān)于兩者的選擇丰涉,我覺得如果你的項(xiàng)目周期感覺比較長,建議還是用promise斯碌,畢竟這個(gè)才是大方向一死,如果只是簡(jiǎn)單做做,我覺得async上手更加快傻唾。