10、promise
1、Promise爲一個構造函數,可以使用他來構造函數,他是異步的
2、這個構造函數的參數是兩個函數:resolve和reject。
3、這兩個函數的作用是將Promise的結果從pending(等待)轉化爲resolved(已解決),
或者從pending轉化爲rejected(失敗)
-
方法概況:
- 簡單來說,promise函數的內部包含着一個異步的函數,
- 當異步函數執行完畢後,通過resolve或者reject將結果返回出去,無論是成功還是失敗
- then的主要作用是將返回的結果獲取過來,
-
catch的主要作用是捕獲Promise對象在使用catch之前的異常
1、實例化promise let p = new Promise((resolve,reject)=>{ let flag = Math.random()>0.5 ? true:false; if(flag){ console.log('success'); resolve('success'); }else{ console.log('err'); reject('err'); } }); 2、兩個方法:then和catch p.then((result)=>{ console.log(result); }).catch((err)=>{ console.log(err+'err'); }); 3、使用Promise封裝一個ajax請求 function getURL(url){ return new Promise((resolve,reject)=>{ var req=new XMLHttpRequest(); req.open('GET',url,true); req.onload=function(){ if (req.status==200) { resolve(req.responseText); }else{ reject(new Error(req.statusText)) } }; req.onerror=function(){ reject(new Error(req.statusText)); }; res.send(); }) } 4、異步加載圖片 let preloadImage=(path)=>{ return new Promise(function(resolve,reject){ let img=new Image(); img.onload=resolve; img.onerror=reject; img.src=path; }) }
待補充……