什么是Promise
异步编程的一种方案, 是一个容器保存着未来将可能发生的事情
promise实例对象的特点
1、promise中的状态只有异步操作结果才能改变
promise中有3个状态 1、pending 2、resolve 3、rejected
状态的改变 1->2 或者1->3
2、状态一旦改变,就不会再变
function testPromise(ms) {
return new Promise(function (resolve,reject) {
setTimeout(resolve,ms,"done")
})
}
testPromise(1000).then(function (value) {
console.log(value)
})
一秒钟以后会输出done 值得注意的是新建promise的过程中 构造函数会被立即执行
使用promise实现ajax请求
var getJSON=function (url) {
return promise=new Promise(function (resolve,reject) {
var xhr=new XMLHttpRequest();
xhr.open("GET",url);
xhr.responseType='json';
xhr.setRequestHeader('Accept','application/json')
xhr.onreadystatechange=handler;
function handler() {
if(this.readyState!=4){
return ;
}else{
if(this.status==200){
resolve(this.response);
}else{
reject(this.status);
}
}
}
xhr.send();
})
}
getJSON("a.json").then(function (res) {
console.log(res)
}).then(function (msg) {
console.log(msg)
})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。