1. 這是個什么東西--------console.dir(Promise) 打印出來
--------Promise是一個構造函數,自己身上有all、reject、resolve這幾個方法,原型上有then、catch等方法。因此Promise new出來的對象肯定就有then、catch方法
--------Promise的構造函數接收一個參數,是函數,並且傳入兩個參數:resolve,reject,分別表示異步操作執行成功后的回調函數和異步操作執行失敗后的回調函數。
2.用起來是怎么樣(resolve作用)
function a(){
var b= new Promise(function(resolve, reject){
//異步操作
setTimeout(function(){
console.log('完成');
resolve('輸出的東西');
}, 2000);
});
return b;
}
a().then(function(data){
console.log(data);
//后面可以用傳過來的數據做些其他操作
//在a()的返回上直接調用then方法,then接收一個參數,是函數,並且會拿到我們在a中調用resolve時傳的的參數。運行這段代碼,會在2秒后輸出“完成”,緊接着輸出“輸出的東西”。
});
注意點:-----用Promise的時候一般是包在一個函數中,在需要的時候去運行這個函數---再用異步的方法
------在then方法中,你也可以直接return數據而不是Promise對象,在后面的then中就可以接收到數據
優勢:--------Promise的優勢在於,可以在then方法中繼續寫Promise對象並返回,然后繼續調用then來進行回調操作。
3. reject的用法
then方法可以接受兩個參數,第一個對應resolve的回調,第二個對應reject的回調。所以我們能夠分別拿到他們傳過來的數據
4.catch的用法
和then的第二個參數一樣,用來指定reject的回調--------即便是有錯誤的代碼也不會報錯,與try/catch語句有相同的功能。
5.all方法的用法
Promise的all方法提供了並行執行異步操作的能力,並且在所有異步操作執行完后才執行回調
all會把所有異步操作的結果放進一個數組中傳給then----可以並行執行多個異步操作,並且在一個回調中處理所有的返回數據