最近在看《你不知道的javascript中卷》,發(fā)覺作者花了基本一半的篇幅去講異步和promise,覺得有必要總結(jié)一下。
其實(shí)本文的目的是想手寫一個(gè)Promise的,無奈總結(jié)著總結(jié)著發(fā)覺篇幅有點(diǎn)長(zhǎng),因此只好一分為二,先介紹promise的用法,知道怎么用,我們才知道怎么寫,所以把手寫一個(gè)promise的任務(wù)放到了下一篇文章當(dāng)中。
當(dāng)然,網(wǎng)上有很多關(guān)于promise的文章,都可以參考參考,有誤之處,歡迎之處。
什么是Prmoise
promise是ES6新增的一個(gè)特征,它已被列入ES6的正式規(guī)范中
Promise對(duì)象可以理解為一次執(zhí)行的異步操作,使用promise對(duì)象之后可以使用一種鏈?zhǔn)秸{(diào)用的方式來組織代碼;讓代碼更加的直觀。也就是說,有了Promise對(duì)象,就可以將異步操作以同步的操作的流程表達(dá)出來,避免了層層嵌套的回調(diào)函數(shù)。
示例:未使用promise,回調(diào)必須層層嵌套
$.ajax(url1, function(data1){ // do something... $.ajax(url2, function(data2){ // do something... $.ajax(url3, function(data3){ // do something... done(data3); // 返回?cái)?shù)據(jù) }) }); });