ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。
resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
let promise = new Promise(function(resolve,reject){
if(true){
resolve("修改状态");
}else{
reject(error);
}
})
promise.then(function(value){
alert(value) //value是resolve()的参数
},function(error) {
// body...
alert(error)
});
let fn = ()=>{
return 3;
}
let promise = new Promise(function(resolve,reject){
if(true){
resolve(fn());
}else{
reject(error);
}
})
promise.then(function(value){
alert(value) //3
},function(error) {
// body...
alert(error)
});
ajax使用Promise对象的实例:
const getJSON = function(url) {
const promise = new Promise(function(resolve, reject){
const handler = function() {
if (this.readyState !== 4) {
return;
}
if (this.status === 200) {
resolve(this.response);
} else {
reject(new Error(this.statusText));
}
};
const client = new XMLHttpRequest();
client.open("GET", url);
client.onreadystatechange = handler;
client.responseType = "json";
client.setRequestHeader("Accept", "application/json");
client.send();
});
return promise;
};
getJSON("/posts.json").then(function(json) {
console.log('Contents: ' + json);
}, function(error) {
console.error('出错了', error);
});
网友评论