1.语法
new Promise( function(resolve, reject) {...} /* executor */ );
参数
executor
executor是带有resolve和reject两个参数的函数。
Promise构造函数执行时立即调用executor函数,resolve和reject两个函数作为参数传递给executor(executor函数在Promise返回所建promise实例对象前被调用)。
resolve和reject函数被调用时,分别将promise的状态改为fulfilled(完成)或rejected(失败)。
executor内部通常会执行一些异步操作,一旦异步操作执行完毕(成功/失败)要么调用resolve函数来将promise状态改成fulfilled,要么将promise函数将状态改为rejected。如果在executor函数中抛出一个错误,那么该promise状态为rejected。
2.描述
promise对象是一个代理对象(代理一个值),被代理的值在Promise对象创建时可能是未知的。它允许你对异步操作的成功和失败分别绑定对应的处理方法。这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的promise对象。
一个promise有以下几种状态:
3.创建Promise
想要某个函数拥有promise函数,只需让其返回一个promise即可
function myAsyncFun(url){
return new Promise((resolve, reject)=>{
const xhr = new XMLHttpRequest();
xhr.open("GET",url);
xhr.onload = ()=> resolve(xhr.responseText);
xhr.onerror =() => reject(xhr.statusText);
xhr.send();
})
}
愿我们有能力不向生活缴械投降---Lin