概念之類的,大概讀者都應該有所知道,接下來咱們直入終點。promise
先讓咱們來看看什麼是Promise吧,他是一個object,類,arry,function?異步
首先,學習它的時候應該講其打印出來,看看究竟是個什麼如圖下:函數
原來如此,是一個構造函數,裏面有all、reject、resolve這幾個眼熟的方法,原型上有then、catch等一樣很眼熟的方法;學習
接下來正題開始:3d
創造一個pro對象,使用構造函數Promise來構造,裏面有一個參數,以函數的形式,函數裏面一個定時器,原始的相似於異步操做均可以是用定時器來代替。對象
這樣接下來promise()執行這個函數,返回一個pro對象,這個對象就是上面所說的已Promise構造函數定義的對象,裏面有一些方法上面已經展示出來了,那麼,調用這個函數之後,成功了,resolve()返回一個成功的對象,reject人會一個失敗的對象,這樣解釋有點容通,可是能夠這麼去理解,有助於我的去理解。blog
而後使用pro.then()方法來回調,能夠接收到異步操做的參數data。get
其實 咱們用給一個回調函數也能實現這樣的操做,爲何還須要Promise呢,接下來看看這個代碼:原型
這樣也能實現以上的用法,爲何還須要呢,可是你們有沒有想過,當以後還須要回調怎麼辦,出現屢次回調呢?回調函數
那麼,Promise的方法就展示了他的好處
鏈式操做的模式來讀解js,接下來在看看這段代碼:
完美解決了多層回調。
那麼咱們在來介紹一下Promise的另一下用法reject,catch
在resolve的回調中,咱們console.log(somedata);而somedata這個變量是沒有被定義的。若是咱們不用Promise,代碼運行到這裏就直接在控制檯報錯了,不往下運行了。可是在這裏,會獲得這樣的結果: