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; }) }
待补充……