对promise、resolve和reject的简单理解
Promise构造函数接受一个函数作为参数,其中该参数又接受两个函数作为它自身的参数,分别是resolve和reject(也可以起其它的名字)。对于promise对象、resolve和reject函数的作用理解如下:
1.new Promise()返回一个promise对象,该对象共有三种状态:进行中、已完成和失败,回调函数的调用是根据对象的状态来完成的;该对象的原型上拥有then和catch等方法。
2.在构造函数参数的内部执行自定义的一些代码,通过代码的执行结果来选择调用resolve方法还是reject,例如下图中就是通过传入的num值来决定执行哪个方法。
3.resolve方法的作用是把promise对象的状态从进行中变成已完成,同时可以向resolve方法传入参数,这个参数会在将来被promise对象的then方法获取,而reject方法也是同样的道理,只不过是把promise对象状态变成失败,同时传入的参数会被catch方法获取而已。
4.也就是说,resolve和reject方法的作用只不过是根据代码逻辑,把promise对象的状态置为已完成或失败,同时通知promise方法的then方法或catch方法:我们已经修改promise对象的状态,接下来需要你们(then和catch)根据对象的状态决定走哪条路。说白了,resolve、reject就是promise对象和then、catch之间的狗腿子。
5.整个过程可以总结为:当resolve或reject修改promise对象状态之后,通过检测promise对象的状态,决定执行then还是catch回调方法。在这个过程中:resolve和reject起到的作用是修改对象状态、通知回调函数以及传递回调函数可能需要的参数。这样做的好处就是:把逻辑判断和回调函数分开处理。
例如下图中的代码运行结果:
延伸至axios:
因为axios是基于promise的,因此axios异步请求也返回一个promise对象,所以有axios().then()这样的写法,这说明axios本身已经对异步请求的过程做了封装,若请求成功则传递响应内容给then方法,否则传递给catch方法。
对promise、resolve和reject的简单理解相关推荐
- ES6 — Promise基础用法详解(resolve、reject、then、catch,all,)
ES6 - Promise基础用法详解 Promise 是一个构造函数,它自身拥有all.reject.resolve这几个眼熟的方法, 原型上有then.catch等同样熟悉的方法. 所以,在开始一 ...
- Promise初步详解(resolve,reject,catch
Promise其实是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用P ...
- promise简单理解
1.什么是promise 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件的结果. 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息. Promise 提供统 ...
- JavaScript系列之Promise的resolve、reject、then、catch
文章の目录 一.什么是Promise 二.Promise的优点 三.promise的三种状态 四.简单使用 1.Promise()构造器 1.1.概述 1.2.语法 1.3.参数 1.4.返回值 2. ...
- ES6---new Promise()讲解(尤其注意里面的参数resolve、reject)
ES6-new Promise()讲解(尤其注意里面的参数resolve.reject) 直接打印出来看看吧,console.dir(Promise). 这么一看就明白了,Promise是一个构造函数 ...
- promise异步请求串行异步then并行异步all竞争异步race 传递参数resolve(then)reject(catch)
1.印象 古人云:"君子一诺千金",这种"承诺将来会执行"的对象在JavaScript中称为Promise对象. Promise就是解决多个异步请求的问题 Pr ...
- Promise构造函数的方法1:Promise.resolve()和Promsie.reject()
1.promise.resolve() 它是成功状态的Promsie的一种简写方式. 参数传递:(以下重点掌握一般参数的传递): 1)一般参数和参数为空的情况下,直接返回一个resolved状态的Pr ...
- 简单理解XHR、Ajax、Axios、Promise
什么是异步请求? 请求:客户端向服务器请求数据! 无异步请求:在完整网页上发送任何请求,都会导致整个页面的全部刷新! 有异步请求:可以实现网页的局部刷新! 如何查看网页的异步请求(XHR)? F12= ...
- JavaScript异步与Promise基本用法(resolve与reject)
Promise解决的问题 相信每个前端都遇到过这样一个问题,当一个异步任务的执行需要依赖另一个异步任务的结果时,我们一般会将两个异步任务嵌套起来,这种情况发生一两次还可以忍,但是发生很多次之后,就形成 ...
- promise对象里resolve和reject状态讲解及Promise.all()的使用
举例: 同步异步可以说是对被请求方来说的,被请求者使用什么方式来告知处理结果 思考,思考.......,好了,有答案了,当场告诉你 -------- 同步 这个问题需要一点时间,你先做点别的,等我想好 ...
最新文章
- 小学生python入门-如何看待小学生开始学Python?
- 设计模式-Strategy模式
- Android中dp与px互转的方法
- 工作325:uni-格式化日期
- 线程属性 pthread_attr_t
- 编译asp.net文件为dll文件
- 服务器系统win12可以安装CAD,技术员教你解决win10系统安装CAD2012的教程介绍
- 深度linux 官网,深度OS
- 京东返利PHP采集关键字,php 抓取京东产品数据-标题,价格,首图片
- etcd系列深入浅出客户端
- OCCT v11.0.16 x64 电脑硬件检测烤鸡软件中文
- Zynga公布2021年第一季度财务业绩
- SpringBoot从入门到精通教程(三十)- 支付宝企业支付集成(五分钟集成)
- multi_match 查询【muti_match和match区别】
- 【CSS】背景样式(颜色、图片、平铺、附着和位置)
- echarst环形进度,官网https://echarts.apache.org/examples/zh/index.html
- 经典加密算法的实现与破解大素数生成算法
- star-rating评分插件的使用
- 百亿级通用推荐系统实践
- 机器学习实战(1)——线性分类器+Logistic回归解决良/恶性乳腺癌肿瘤预测问题