1、什么是Promise

promise是解决异步的方法,本质上是一个构造函数,可以用它实例化一个对象。对象身上有resolve、reject、all,原型上有then、catch方法。promise对象有三种状态:pending(进行中)、fulfilled(成功)、rejected(失败)

Promise对象有两个特点:

(1)对象的状态不受外界的影响。Promise对象代表一个异步操作,只有异步操作的结果可以决定Promise对象的状态,其他任何操作都不会改变这个状态。这个可以与Promise它的名字一起理解,Promise是“承诺”的意思,表示其他手段无法改变。

(2)状态一旦改变,便不会再次改变。而且它的状态改变只会由(pending->fulfilled、

pending->rejected)并且这两种情况只要发生其中一个,状态便固定了。

2、Promise的优点:

(1)支持链式调用(可以将异步操作以同步的方式显示出来)避免回调地狱

什么是回调地狱?

多个回调函数层层嵌套,外层回调函数异步返回的结果是内层回调函数执行的条件

回调地狱的缺点?

1、可读性、可维护性差

2、不便于异常处理

什么是回调函数?

回调函数简称为“回调”,可以理解为“回过头来调用的函数”。它是作为一个参数,传递给另一个函数,待那个函数执行完毕之后,再来执行这个传递进来的参数。

为什么要有回调函数?

因为你不知道子线程什么时候执行完毕,这个时候就需要有回调函数,待它执行完毕之后再来通知主线程。

(2)指定回调函数的方式更加灵活:先前我们必须在定义一个异步任务之前指定回调,现在可以在异步任务执行完毕之后再指定回调。

Promise的缺点?

1、无法取消它,一旦建立就会立即执行,没办法中途取消

2、如果不给它设置回调函数,内部的抛出错误没办法显示

3、当处于pending状态的时候,无法得知当前进展到哪一地步(是刚开始还是刚结束的状态)

(由于自己对Promise一直都没有特别懂,因此记录一下)

什么是Promise?Promise有什么好处相关推荐

  1. 【Promise】自定义 - 手写Promise - Promise.all - Promise(executor)

    手写Promise 1. 整体结构框架 2. Promise(executor) 3. Promise.prototype.then 4. Promise.prototype.catch 5. Pro ...

  2. Promise ,Promise.all 和Promise.race的区别

    Promise ,Promise.all 和Promise.race的区别 Promise promise是用来解决异步编程问题的,比传统的回调函数和事件处理方法要更加的合理. promise有三个状 ...

  3. JavaScript异步函数Promise①——Promise筑基

    期约是对尚不存在的一个替身.期约(promise)这个名字最早是由 Daniel Friedman和 David Wise在他们于 1976 年发表的论文"The Impact of App ...

  4. vue 手写签名_手写Promise/Promise.all/Promise.race(手写系列一)

    背景 几个月没写文章了,愧对关注本专栏的小伙伴.最近有同学提议我出一个手写系列的文章对常见对前端工具.框架.设计模式做一个覆盖.同时有个要求:代码要尽量短小易懂,并且体现原理,让学习者学习过后能在未来 ...

  5. netty中的future和promise源码分析(二)

    前面一篇netty中的future和promise源码分析(一)中对future进行了重点分析,接下来讲一讲promise. promise是可写的future,从future的分析中可以发现在其中没 ...

  6. Promise入门详解和基本用法 我来教你

    JavaScript的执行环境是单线程. 所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个,它会「阻塞」其他任 ...

  7. JavaScript之Promise

    看完下面文章,你将了解到: 1.什么是Promise? 2.Promise怎样使用以及使用的场景,解决了什么问题 3.ES7较ES6又增加了哪些支撑Promise的语法糖 复制代码 一.Promise ...

  8. 娓娓道来Promise

    1.概述 在Promise之前,我们js解决异步的方式是采用回调函数的方式,但是这种方式有个问题,就是当业务比较复杂时,很容易出现回调地狱,使得代码很难理解和维护.所以,Promise就是解决回调地狱 ...

  9. Promise处理前端异步事件

    一:理解两种类型的回调函数 1,同步回调函数:立即执行,完全执行完才结束,不会放入回调队列中.例如:数组遍历相关的回调函数/Promise的excutor函数2,异步回调函数:不会立即执行,会放入回调 ...

  10. TypeScript入门教程 之 Promise

    TypeScript入门教程 之 Promise Promise 在Promise类的东西,存在于许多现代的JavaScript引擎,并可以很容易地polyfilled.承诺的主要动机是将同步样式错误 ...

最新文章

  1. 讨厌php机试_[转载]PHP上机面试题
  2. android11和ios,安卓与iOS细节对比:Reno Ace与iPhone 11 Pro Max,结果很意外
  3. DVWA1.9平台XSS小结
  4. rust大油田分解机_油田泥浆泵油田环保罐车配套泥浆泵
  5. HTTPS 证书配置
  6. JVM实战与原理---内存回收策略
  7. YUV常用的两种保存方式_YUY2和YV12
  8. 多态的两种用法 形参与返回值 java
  9. 【PDN仿真笔记3-电容布局Q3D模型搭建】
  10. Netty原理与基础
  11. overleaf表格_latex插入表格心得
  12. 想要定制专属AI声音?这是一份来自微软的保姆级攻略
  13. java编译找不到符号_java编译时找不到符号,怎么处理
  14. JSX、JSX的介绍、JSX特点、JSX的语法、XML基本语法
  15. [K8S] PV动态供给
  16. 基于word2vec使用wiki中文语料库实现词向量训练模型--2019最新
  17. 【定位原理揭秘第三期】室内定位技术原理揭秘
  18. 设计模式之禅【解释器模式】
  19. VideoProc for mac(全能视频处理软件)
  20. 什么是策划?策划的真正含义是什么?

热门文章

  1. 如何查看自己的支付宝花呗是否已经接入央行征信? #花呗部分用户接入央行征信#
  2. 网线插座板上网络模块接线
  3. UE4 实现C++蓝图接口
  4. 优化jsj脚本,防止浏览器卡死
  5. 计量单位报错:消息号BM305 “未使用语言 ZH 创建单位 XXX”
  6. 穿上就不想脱下!这款火爆ins的夏季凉鞋,防滑,抗污,速干不臭脚!让你秒变型男!...
  7. STM32CubeMX | | 使用小熊派玩转颜色识别传感器(纯手工打造E53传感器模块)
  8. Mentor.Graphics.FloTHERM.XT.2.3+Mentor.Graphics.Flowmaster.7.9.4
  9. 华为云CDN网站加速配置
  10. python合并视频(mp4+mp3)