zoukankan      html  css  js  c++  java
  • 关于Promise的记录和理解

    在JavaScript中,所有的代码都是单线程执行的,这就导致了其所有的网络请求,IO操作,浏览器时间等都是异步非阻塞的模式执行的,这就使得代码的执行顺序可能会超出我们的掌控。

    尤其是当多个异步操作待执行,我们需要控制它的顺序的时候。这时一般的解决方法是回调,Generator,Promise或者await/async等,这里我主要记录Promise。

    Promise本质上是一个绑定了回调的对象,把执行代码和结果代码清晰的分离了。

    一个Promise对象大致有三个状态 :

    • pending: 初始状态,既不是成功,也不是失败状态。
    • fulfilled: 操作成功完成。
    • rejected: 操作失败。

    then函数其实有两个回调函数successCallback和failureCallback。前者是成功时的回调,后者是失败时的回调,一般情况下我们只用了第一个successCallback回调,失败状态靠catch来捕捉,其实本质上catch(failureCallback) 是 then(null, failureCallback)的缩写,那么可以知道,这两者在大部分情况下都相等,但在比如当successCallback中抛出了错误,此时第二个回调failureCallback是捕捉不到的,而catch可以。

    在一个catch(即失败操作)触发后,并不影响后续的链式操作。

    后续未完......

  • 相关阅读:
    Centos7 安装配置Elasticsearch
    单例模式
    Eclipse上部署maven项目
    单点登录
    各eclipse插件的作用
    eclipse中安装Subclipse插件
    往idea中导入已有的web项目
    maven 项目部署
    【转帖】算法刷题网站
    混淆矩阵-MATLAB代码详解
  • 原文地址:https://www.cnblogs.com/JJCHEHEDA/p/9715952.html
Copyright © 2011-2022 走看看