ES6之 Promise 异步编程对象(六)

  • Promise 定义

    • Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象
    • Promise对象:代表了未来某个将要发生的事件(通常是一个异步操作)
    • ES6的Promise是一个构造函数, 用来生成promise实例
  • Promise对象的3个状态

    • pending: 初始化状态
    • fullfilled: 成功状态
    • rejected: 失败状态
  • 使用Promise基本步骤(2步)

    • 创建promise对象

      let promise = new Promise((resolve, reject) => {
            //初始化promise状态为 pending
            //执行异步操作
            if(异步操作成功) {
              resolve(value);//修改promise的状态为fullfilled
            } else {
              reject(errMsg);//修改promise的状态为rejected
            }
       })
      
    • 调用promise的then()

      promise.then(function(value) {
        // success
      }, function(errMsg) {
        // failure
      });
      
  • 实例

    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);
    });
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值