1. 這是個什麼東西--------console.dir(Promise) 打印出來javascript
--------Promise是一個構造函數,本身身上有all、reject、resolve這幾個方法,原型上有then、catch等方法。所以Promise new出來的對象確定就有then、catch方法java
--------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中就能夠接收到數據spa
優點:--------Promise的優點在於,能夠在then方法中繼續寫Promise對象並返回,而後繼續調用then來進行回調操做。對象
3. reject的用法blog
then方法能夠接受兩個參數,第一個對應resolve的回調,第二個對應reject的回調。因此咱們可以分別拿到他們傳過來的數據ip
4.catch的用法原型
和then的第二個參數同樣,用來指定reject的回調--------即使是有錯誤的代碼也不會報錯,與try/catch語句有相同的功能。
5.all方法的用法
Promise的all方法提供了並行執行異步操做的能力,而且在全部異步操做執行完後才執行回調
all會把全部異步操做的結果放進一個數組中傳給then----能夠並行執行多個異步操做,而且在一個回調中處理全部的返回數據