promise的基本使用

本文主要参考阮一峰作者的ES6入门,地址ES6 入门教程

目录

定义:

promise.then

Promise.prototype.catch()

promise.finally()

Promise.all()

Promise.race()

Promise.allSettled()

Promise.any()方法。

Promise.resolve()将现有对象转换成promise对象

Promise.reject():


定义:

        promise:是异步编程的解决方案,将异步操作用同步操作的流程表达出来,避免层层嵌套的回调函数。promise有三种状态:pending(未完成)、fulfilled(成功)、rejected(失败)。

缺点:1.一旦新建就会立即开始,无法中途取消;

        2.如果不设置回调函数promise内部抛出的错误不会反映到外面;在pending阶段无法查看进行到哪一步。

        3.promise对象是一个构造函数,用来生成promise实例:

const promise = new Promise(function(resolve, reject) {
  // ... some code

  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});

promise.then

在状态改变的时候接收返回的参数。可以传入两个参数,resolved和rejected的回调函数。

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

下面是异步加载图片的例子。

function loadImageAsync(url) {
  return new Promise(function(resolve, reject) {
    const image = new Image();

    image.onload = function() {
      resolve(image);
    };

    image.onerror = function() {
      reject(new Error('Could not load image at ' + url));
    };

    image.src = url;
  });
}

下面是一个用Promise对象实现的 Ajax 操作的例子。

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.onreadystatechan
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值