关于 promise 的理解

什么是promise:

        所谓 promise ,就是一个对象,用来传递异步操作的消息它代表了某个未来才会知道结果的事件(通常是一个异步操作)

,并且这个事件提供统一的 API , 可供进一步处理。

promise 的作用: 

       promise 的出现主要解决地域回调的问题,比如你要请求很多接口,这些接口的参数需要另外的接口返回的数据作为依赖

,这样就需要我们一层嵌套一层,promise就帮我们解决了这个问题。

基本的 API

      promise.resolve()

      promise.reject()

      promise.prototype.then()

      promise.prototype.catch()

      promise.all()  // 完成所有

      promise.all([a,b,c])

基础案例

     Promise 构造函数接受一个函数作为参数,该函数的两个参数分别是 resolve 方法和 reject 方

法。

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

ajax的传统写法

getData(method, url, successFun, failFun){
  var xmlHttp = new XMLHttpRequest();
  xmlHttp.open(method, url);
  xmlHttp.send();
  xmlHttp.onload = function () {
    if (this.status == 200 ) {
      successFun(this.response);
    } else {
      failFun(this.statusText);
    }
  };
  xmlHttp.onerror = function () {
    failFun(this.statusText);
  };
}

改为 Promise写法

getData(method, url){
  return new Promise(function(resolve, reject){
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open(method, url);
    xmlHttp.send();
    xmlHttp.onload = function () {
      if (this.status == 200 ) {
        resolve(this.response);
      } else {
        reject(this.statusText);
      }
    };
    xmlHttp.onerror = function () {
      reject(this.statusText);
    };
  })
}
 
getData('get','www.xxx.com').then(successFun, failFun)

猜你喜欢

转载自blog.csdn.net/Xl4277/article/details/81264590