首页 > 其他分享 >谈谈你对Promise的理解

谈谈你对Promise的理解

时间:2022-08-20 14:56:27浏览次数:60  
标签:异步 reason value 谈谈 理解 promise Promise 回调

一、Promise是什么?

  • 理解

    •  抽象表达:

      • Promise 是一门新的技术(ES6 规范)

      • Promise 是 JS 中进行异步编程的新解决方案(备注:旧方案是单纯使用回调函数)

    •  具体表达:

      • 从语法上来说: Promise 是一个构造函数

      • 从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/失败的结果值

  • promise 的状态改变

    • pending 变为 resolved

    • pending 变为 rejected

    • 说明: 只有这 2 种, 且一个 promise 对象只能改变一次无论变为成功还是失败, 都会有一个结果数据,成功的结果数据一般称为 value, 失败的结果数据一般称为 reason。

二、Promise 构造函数的基本用法

const p = new Promise((resolve, reject) => {
       if (...) {   // succeed
             resolve(result);        
       } else {     // fails
             reject(Error(errMessage));
       }
});

p.then(value => {
  console.log(value.toString())
},reason => {
  console.log(reason)
})

三、为什么要用Promise?

  • 指定回调函数的方式更加灵活

    • 旧的: 必须在启动异步任务前指定

    • promise: 启动异步任务 => 返回 promie 对象 => 给 promise 对象绑定回调函数(甚至可以在异步任务结束后指定多个)

  • 支持链式调用, 可以解决回调地狱问题

    • 什么是回调地狱?
      • 回调函数嵌套调用, 外部回调函数异步执行的结果是嵌套的回调执行的条件,格式上不断地进行缩进。
    • 回调地狱的缺点?
      • 不便于阅读

      • 不便于异常处理

    • 解决方案?
      • promise 链式调用
    • 终极解决方案?

      • async/await

标签:异步,reason,value,谈谈,理解,promise,Promise,回调
From: https://www.cnblogs.com/songyajie32C/p/16607699.html

相关文章

  • 事件循环:微任务和宏任务在v8中实现的简单理解
    微任务在js中,当使用promise,会将当前任务加入事件执行的微任务队列,有且只有这一种方法可以,因为当使用了promise,在JS引擎中会触发VM::queueMicrotask,会向m_microtaskQueue队......
  • 我对DDD领域驱动设计的理解
    本片随笔仅记录自己目前对DDD的理解与实践,后续会持续关注DDD,持续更新1.DDD是什么DDD是领域驱动设计的简称,那什么是领域呢,领域就是业务,比如,制药领域,金融领域,电商领域等等......
  • Eureka 理解
    生活中的例子:就好比网约车出现以前,人们出门叫车只能叫出租车。一些私家车想做出租却没有资格,被称为黑车。而很多人想要约车,但是无奈出租车太少不方便。私家车很多却不敢拦......
  • 通过一个具体的例子理解 npm 的 peerDependency
    假设我们有两个npmmoduleA和B,A是B的plugin.如果ABAP的package.json里将B定义成其dependency:{"dependencies":{"B":"1.2.0"}}那么我们......
  • 深入理解Redis 数据结构—字典
    字典,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构。在字典中,一个键可以和一个值进行关联,这些关联的键和值称为键值对。键值对中键是唯一的,我们可以......
  • 2020-阅读理解-Text 1
    Text1AgroupofLabourMPs,amongthemYvetteCooper,arebringinginthenewyearwithacalltoinstituteaUK“townofculture”award.Theproposalisth......
  • 闭包和promise
    闭包和promise一、闭包概述:闭包是一种书写代码一种结构,这种结构拥有的特性就是内部的空间在使用中不会被回收(内部的变量以及对应的参数不会被gc回收)1、函数的预编译过程......
  • 闭包和promise
    闭包概述:闭包是一种书写代码一种结构,这种结构拥有的特性就是内部的空间在使用中不会被回收。(内部的变量以及对应的参数不会被gc回收)函数的预编译过程开辟函数的内存空......
  • 透过inode来理解硬链接和软链接
    什么是inode?每个文件都对应一个唯一的inode,inode用来存储文件的元信息,包括:对应的文件文件字节数文件数据块的位置文件的inode号码文件的硬链接数文件的读写权限文......
  • REST的理解.md
    REST名称REST--REpresentationalStateTransfer全称是ResourceRepresentationalStateTransfer,第一个单词被省略了。通俗来讲就是:资源在网络中以某种表现形式进行......