es6中的promise对象

     Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) 、Resolved(已经完成)和Rejected(已失败)

ES6规定,Promise对象是一个构造函数,用来生成Promise实例。

var promise=new Promise(function(resove,reject){
     if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
})

Promise实例生成以后,可以用then方法分别指定Resolved状态和Reject状态的回调函数。

promise.then(function(value) {
  // success
}, function(error) {
  // failure
});

案例

var promise=new Promise(function(resolve,reject){
         console.log('promise');
     })
     promise.then(function(){
        console.log('我后执行')
     })
     console.log('我先执行')

//上面代码中,Promise新建后立即执行,所以首先输出的是“Promise”。然后,then方法指定的回调函数,
//将在当前脚本所有同步任务执行完才会执行,所以“我后执行” 最后输出。

 ajax

 1      var getJSON=function(url){
 2         var promise=new Promise(function(resolve,reject){
 3             var xhr=new XMLHttpRequest();
 4             xhr.open('get',url);
 5             xhr.onreadystatechange=handler;
 6             xhr.send(null);
 7 
 8             function handler(){
 9                 if(this.readystate!==4){
10                     return;
11                 }
12                 if(this.status==200){
13                     resolve(this.responseText)
14                 }else{
15                     reject(new Error(this.statusText));
16                 }
17             }
18         })
19           return promise;
20      }
21     getJSON("/get.json").then(function(json) {
22       console.log('Contents: ' + json);
23     }, function(error) {
24       console.error('出错了', error);
25     });
View Code
原文地址:https://www.cnblogs.com/lijinblogs/p/5894176.html