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对象的实例。

      

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/swjRH/p/13623547.html
Copyright © 2011-2022 走看看