zoukankan      html  css  js  c++  java
  • promise

    Promise

    1、promise是异步编程的一种解决方案,主要用于异步计算

    2、帮助我们处理队列   解决回调地域(回调函数嵌套很多层 每一层都可以插入很多代码

    promise 有三个状态:

    1、pending[待定]初始状态

    2、fulfilled[实现]操作

    3、rejected[被否决]操作失败

    Promise 对象的状态改变,只有两种可能:

    pending 变为 fulfilled

    pending 变为 rejected

    这两种情况只要发生,状态就凝固了,不会再变了。

    promise特点

    1. Promise的状态一旦改变就无法更改
    2. then方法的参数期望是函数,传入非函数则会发生值穿透
    3. promise的回调是同步的,then是异步的
    4. 链式调用then,上一个then的返回值是下一个then接收到的参数,如果抛出错误,会返回一个状态为reject的promise
    5. 如果返回的是promise 那么会等待promise的异步执行,根据异步执行的是resolve,还是reject再进入then或者catch

     

    promise 优点:

      1、统一异步 API
      Promise 的一个重要优点是它将逐渐被用作浏览器的异步 API ,统一现在各种各样的 API ,以及不兼容的模式和手法。

      2、Promise 与事件对比
      和事件相比较, Promise 更适合处理一次性的结果。在结果计算出来之前或之后注册回调函数都是可以的,都可以拿到正确的值。

      Promise 的这个优点很自然。但是,不能使用 Promise 处理多次触发的事件。链式处理是 Promise 的又一优点,但是事件却不能这样链式处理。

      3、Promise 与回调对比
      解决了回调地狱的问题,将异步操作以同步操作的流程表达出来。

      4、Promise 带来的额外好处是包含了更好的错误处理方式(包含了异常处理),并且写起来很轻松(因为可以重用一些同步的工具,比如 Array.prototype.map() )。

    promise 缺点:

      1、无法取消Promise,一旦新建它就会立即执行,无法中途取消。

      2、如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。

      3、当处于Pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。

      4、Promise 真正执行回调的时候,定义 Promise 那部分实际上已经走完了,所以 Promise 的报错堆栈上下文不太友好。

    promise的方法用

    • ES6规定,Promise对象是一个构造函数,用来生成Promise实例
    • Promise对象接受一个回调函数作为参数, 该回调函数接受两个参数,分别是成功时的回调resolve和失败时的回调reject;另外resolve的参数除了正常值以外, 还可能是一个Promise对象的实例;reject的参数通常是一个Error对象的实例。

      

  • 相关阅读:
    第二阶段个人冲刺总结01
    软件工程学习进度表13
    软件工程学习进度表12
    个人博客(09)
    个人博客(07)
    个人博客(08)
    poj1562 DFS入门
    poj3278 BFS入门
    数组单步运算
    十天冲刺
  • 原文地址:https://www.cnblogs.com/swjRH/p/13623547.html
Copyright © 2011-2022 走看看