老鐵們,我又滿血復活了,今天我准備來吹一波我對promise,如有錯吳請直接指出,明白了嗎?話不多說開始吧
首先我們需要知道啥叫promise,我問了問大佬,他說這個東西是 異步操作的同步代碼(but有兼容問題).
下面我來說說我自己對他的理解:
這個小東西吧還是挺可愛的,來,我們了解了解他
1.它是一個構造函數,使用的時候需要用new實例化
2.他有一個參數,這個參數是一個回調函數,這個回調函數里面又有兩個參數,第一個為resolve 第二個為 reject (這里先放一下,我們來上一段代碼要不然太抽象了)
new Promise(function(resolve,reject) {
resolve()
}).then(function(){},function(){})
注釋:當回調函數里面調用resolve()時,.then會調用第一個函數;當回調函數里面調用reject()時,.then會調用第二個函數
也可以如下面這樣寫
new Promise(function(resolve,reject) {
resolve()
}).then(function(){}).cath(function(){})
注釋:這種寫法,當回調函數里面調用resolve()時,.then會執行;當回調函數里面調用reject()時,.catch會執行
大佬們可能發現了,那我的resolve和reject是形參啊,可不可以用別的名字,當然可以的啦,不過要注意和回調函數內部的調用名字統一起來
3.Promise.all(arr).then(function(){}) arr為數組
Now,我們來說一說Promise的非常有用的方法之一 all方法,這個方法作用:當all里面數組里的所有異步操作都執行完畢后再去執行.then();
4.
Promise.race(arr).then(function(){}) arr為數組
接下來我們來說一說Promise的另一個方法 race方法,這個方法作用:
當race里面數組里的異步操作只要有一個執行完畢后就會去執行.then();
5.我自己體會的作用,如有缺失,請立刻聯系我,你給我補充,我給你打錢
Promise作用: 1.解決回調地獄(關於這個地獄問題,我會在隨后的隨筆中介紹一下)
2.將Ajax獲取來的數據和業務邏輯分開
2.Promise.all()方法可以解決多個Ajax傳回的信息再次組合進行查詢
告辭,告辭
************************************************又在成為最會說相聲的程序員的路上邁出了具有歷史性的一步*******************************************************************