1

什么是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)
     })

丹丹赵
298 声望20 粉丝