• ES6-promise


    1.promise对象是一个代理对象,一个代表为知返回结果的对象值。这个值在promise对象创建时可能是未知的,它允许你为异步操作的成功和失败分别绑定相应的处理方法,这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是返回一个能代表未来出现的结果的promise对象。(pending、fulfilled、rejected)

    2.使用:

    new Promise(executor)

     executor:一个带有两个参数(resolve,reject)的方法,resolve为fulfilled状态,即成功之后调用,reject为rejected状态,即失败之后调用。new Promise((resolve,reject)=>{})

    1.executor在创建promise对象时立即调用。2.若executor函数中抛出错误,promise状态为rejected,executor函数返回值被忽略。

    3.状态:

    pending:初始状态   fulfilled:成功状态    rejected:失败状态

    1.fulfilled、rejected被统称为settled,fulfilled也被称为resolved。2.只有两种状态变化过程:pending-fulfilled、pending-rejected,且状态只可变化一次,一旦发生变化便会一直保持这个结果。

    4.属性:

    1.length:Promise构造器参数个数,始终为1(唯一参数executor)。2.prototype:构造器原型。

    5.方法:

    Promise.prototype.then(resolve[,reject])

    resolve为成功回调函数,reject为失败回调函数(可选),参数为Promise实例返回值。

    Promise.prototype.catch(reject)

    处理内容包括:1.rejected状态对应返回结果。2.catch方法前抛出的错误。

    Promise.prototype.finally()

    Promise实例最终必须执行的操作

    Promise.all([p1,p2,...,p(n)])

    p(n)(n=1,2,...)均为Promise实例

    参数中任一Promise实力状态改变,该方法状态更新为相同状态,并且将该实例的返回结果作为参数传给该方法的回调函数。

    6.Promise.resolve([p])

    将p转化为一个Promise实例

    p的值可以为:1.Promise实例p,该方法将不作任何处理,直接返回p本身。

    2.含有then方法的对象p,该方法将p转换为promise实例,并且立即执行p中的then方法

    3.不含有then方法的对象,或者不是对象的p, 该方法将p转换为Promise实例,状态为fulfilled

    4.无参数,该方法将p转换为Promise实例

    注:该方法执行之后立即执行resolve,是在当前事件循环的结束时

    7.Promise.reject(p)

    将p转换为一个Promise实例,并立即执行reject,且回调函数的参数为p

    8.Promise.try(p)

    p为Promise实例,该方法相当于try{}catch{},Promise.try(p)返回的Promise实例通过catch()既可以捕获同步错误,也可以捕获异步错误。

    注:所有的方法返回值均为新的Promise实例,因此都可以链式调用。

    6.特点:

    1.优点:1.通过同步的表达方式进行异步操作。2.统一的接口

    2.缺点:1.一旦创建、无法取消。2.promise返回的信息只能通过回调函数传递到promise对象外部。

  • 相关阅读:
    C#中.NET 7.0控制台应用使用LINQtoSQL、LINQtoXML
    后端开发人员的Docker入门与实践指南
    RabbitMQ消费者确认消息入门演示
    迁移学习(PCL)《PCL: Proxy-based Contrastive Learning for Domain Generalization》
    LINUX NVME SSD 大容量存储设计
    leetcode279完全平方数刷题打卡
    算法-煤球数目
    工业智能网关BL110应用之四十四: COM口采集电表设备的配置
    【软件基础】Linq优化双重for循环、批量写入Excel以提升程序运行速度、常见代码优化方法
    SpringCloud - Spring Cloud Netflix 之 Zuul网关;过滤器filter(十二)
  • 原文地址:https://blog.csdn.net/XJ5210224/article/details/103811477