当前位置: 首页 > news >正文

axios中的resolvePromise为什么影响promise状态

axios的取消请求意思很简单,就是在发送请求后不久停止发送请求

0.22

本文探讨的是v0.22.0之前的CancelToken API,因为在阅读源码交流的时候发现很多朋友不理解为什么CancelToken中的resolvePromise会影响到实例对象身上的promise状态

即下图所示代码:
promiseState
不理解的点在于为什么resolvePromise这个"变量"执行会改变promise状态

关于这个点,我们可以很好的学习一下这种把函数暴露出去的执行的编程思想

我们先梳理一下axios取消请求的过程
过程1
在执行cancel()函数后,因为在cancelToken中(绿框)执行了cancel=c,而c是一段函数,而函数是特殊的对象,所以cancelc指向的是同一个对象,所以其实上c执行了

下图为c,是一段函数
c
c这段函数执行的过程中,在函数体内的resolvePromise执行了,当这段代码执行后,便会改变axios实例中的promise的状态,从而在then中输出取消请求的信息

回到原来的点,就是为什么CancelToken中的resolvePromise会影响到实例对象身上的promise状态,原因其实也很简单,我们可以看到resolvePromise = resolve;这个代码,而关键的是resolve并不是一个原始数据类型,为什么,请看ES6中关于promise的这段文字

hanshu
resolve也是函数,所以resolvePromiseresolve指向同一个地址,进而影响实例中的promise属性的返回值

这种把变量赋值给全局变量,通过全局变量还改变promise状态的写法的编程思想,值得我们好好研究

http://www.lryc.cn/news/9331.html

相关文章:

  • AWS攻略——创建VPC
  • 一文搞懂ECU休眠唤醒之利器-TJA1145
  • 【Java基础】022 -- Lambda与递归练习
  • 技研智联云原生容器化平台实践
  • 订单服务:订单流程
  • Python的有用知识,一共十三个代码片段,确定不来看看吗
  • 数据结构与算法-数组
  • PMP证书在哪个行业比较有用?
  • Wine零知识学习4 —— Wine编译进阶详解
  • win10-右键打开windows terminal
  • 关于使用CMT2300A FIFO缓存区间设置为64Byte的问题
  • 网页概念、常用浏览器及内核、Web标准
  • 【刷题笔记】--搜索二维矩阵 II
  • uni-app实战教程
  • SpringCloud: sentinel降级配置、热点参数、系统规则 配置到nacos
  • 交换机之配置netsflow
  • 非科班出身学习软件测试可以么
  • 面试已上岸,成功拿到阿里和腾讯的入职offer,Java程序员面经全在这了,希望能帮到你!
  • Redisson分布式锁
  • LOF(Local Outlier Factor)原理
  • [ vulhub漏洞复现篇 ] Drupal<7.32 Drupalgeddon SQL注入漏洞(CVE-2014-3704)
  • Part 4 描述性统计分析(占比 10%)——下
  • 【一般人不会告诉你】比肩chatgtp的5款AI网站
  • LA@相似方阵和对角化
  • 存储类别、链接与内存管理(二)
  • JavaScript 入门教程||javascript 简介||JavaScript 用法
  • 新闻稿写作指南
  • 一文详解Redis持久化的两种方案
  • 第六章 - 数据过滤where(where与and和or的组合用法)
  • Oracle 定时任务例子