Promise的异常穿透和中断Promise的链式请求
1.Promise的异常穿透
1==》当你使用Promise的then,进行链式调用的时候,可以在最后指定失败的回调
2==》前面任何操作出现了异常,都会传递到最后失败的回调中进行处理;
Promise的异常穿透和 p.then(resolve=>{ do someting success thing},err=>{ do someting fil thing})
是不同的哈
promise的异常穿透是进行链式调用的时候才会出现异常穿透;
2.Promise的异常穿透demo
let p = new Promise((resolve, reject) => {
setTimeout(() => {
reject('第一种err');
}, 2000)
})
p.then(res => {
console.log(111); //2s后不会输出111
}).then(res => {
console.log(222); //2s后不会输出222
}).catch(err => {
console.log(err) //最终直接走这里哈
})
之所以会走这里是因为,是setTimeout抛出了一个错误的异常;所以不会走then;而是直接走catch;
之所以是走catch;根据Promise的异常穿透
换一句话说就是:使用reject之后,将不会去执行then了,而是去执行catch
3.Promise的非异常穿透,对错误的处理
let p = new Promise((resolve, reject) => {
setTimeout(() => {
reject('第一种err');
}, 2000)
})
p.then((res) => {
console.log(res)
}, (err) => {
console.log(err);//输出错误
})
4.中断Promise链式操作
let p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('ok');
}, 2000)
})
p.then(res => {
console.log(111)
// 有且只有一种方式去中断Promise;让Promise的状态是padding
return new Promise(() => {})
}).then(res => {
console.log(222);
}).catch(err => {
console.log(err)
})
只常的情况下,会输出111和222.
但是你中断了Promise,让Promise的状态是padding
所以只能够输出111了。
222不能够输出。
Promise的异常穿透和中断Promise的链式请求的更多相关文章
- promise抛异常,执行队列
//promise抛出异常 new Promise((resolve,reject)=>{ resolve("成功") }).then(res=>{ if(res != ...
- 由浅入深,从掌握Promise的基本使用到手写Promise
由浅入深,从掌握Promise的基本使用到手写Promise 前言 在ES6之前,对于一些异步任务的处理始终没有很好的方案可以解决,处理异步的方案可谓是十分混乱,在业务需求下异步请求的套用,就形成了回 ...
- 比callback更简洁的链式执行promise
promise自己理解的也不够深刻,具体知识点不在这里细说了 直接上个例子,清晰明了,自己去悟吧 <script type="text/javascript"> //模 ...
- Promise (1) 如何使用Promise
Promise 也是面试高频问题, 今天我们来看看Promise是什么, 能做什么, 怎么用, 下一期我们自己来模拟一个myPromise 1 Promise 是什么 我们要学会自己给自己提问, 才 ...
- 在Vue单页面应用中使用Promise链式调用
eg: this.commonLoginFun().then((res) => { if (res.errNo === 0) { const { isLogin } = res.data; if ...
- 从 axios 源码中了解到的 Promise 链与请求的取消
axios 中一个请求取消的示例: axios 取消请求的示例代码 import React, { useState, useEffect } from "react"; impo ...
- Promise.then链式调用
let a = new Promise((resolve,reject)=>{ resolve(1) }).then((r)=>{console.log(r)}).then(()=> ...
- promise不会被return触发, 一个promise对象中不会被Promise.reject触发
1. let a = new Promise((resolve,reject)=>{ return 23 }) a; // promise <pending> 2. let a = ...
- 学了ES6,还不会Promise的链式调用?🧐
前言 本文主要讲解promise的链式调用的方法及其最终方案 应用场景 假如开发有个需求是先要请求到第一个数据,然后根据第一个数据再去请求第二个数据,再根据第二个数据去请求第三个数据...一直到最后得 ...
- 史上最简单的手写Promise,仅17行代码即可实现Promise链式调用
Promise的使用相比大家已经孰能生巧了,我这里就不赘述了 先说说我写的Promise的问题吧,无法实现宏任务和微任务里的正确执行(也就是在Promise里面写setTimeout,setInter ...
随机推荐
- PPT 小图标 设计感Max 精修
https://www.bilibili.com/video/BV1ha411g7f5?p=14 图标用处 信息可视化,快速获取信息 增加内容图示化细节,增强设计感 SVG/PNG 图标使用 SVG ...
- Excel 2016 VBA 提取单元格的中文字符
启用开发工具 方式一:[右键Sheet1 ]->[查看代码] 方式二:[开发者工具]->[Visual Basic] Function chinese(rng As String) Dim ...
- 4个工具,让 ChatGPT 如虎添翼!
LightGBM中文文档 机器学习统计学,476页 机器学习圣经PRML中文版 经典著作<机器学习:概率视角 让 ChatGPT 如虎添翼! ChatGPT 很好用,其核心是prompt的运用, ...
- 微软商店上架Windows&Office破解工具,并获5星好评?
大家好,我是DD! 最近真的除了俄乌冲突之外,其他消息似乎都被淹没了,连狗血的娱乐圈都哑火了. 但昨天在微信群(点击加入)里的这张图引起了我的注意... 据群友称Windows应用商店上架了一个破解W ...
- 使用 Python 参与算法竞赛
引言 众所周知,打算法竞赛最频繁使用的语言是 C++.然而,对于那些不卡复杂度的题目,可以考虑使用 Python 编写(因为 Python 真的好写). 本文将简单地介绍一些 Python 使用技巧和 ...
- 智慧城市大数据运营中心 IOC 之 Web GIS 地图应用
前言 IOC(Intelligent Operations Center)--智慧城市智能运营中心就是智慧城市的大脑,是建立在各个智慧应用系统之上的系统.通过对政府各职能部门的业务信息共享与整合,聚焦 ...
- 一、Mycat实战---为什么要用mycat
系列导航 一.Mycat实战---为什么要用mycat 二.Mycat安装 三.mycat实验数据 四.mycat垂直分库 五.mycat水平分库 六.mycat全局自增 七.mycat-ER分片 本 ...
- echart相关
https://www.bilibili.com/video/BV1bh41197p8?p=21&spm_id_from=pageDriver
- 简单的winform学生管理系统Demo
界面效果 练习重点 1. 关系表的创建 2. 增删改查的操作,及sqlhelper的封装 3. 跨页面数据传递,编辑页数据提交后数据局步刷新到列表数据 项目源码 FrmStuddentList pub ...
- zookeeper分布式锁原理及使用 curator 实现分布式锁
本文为博主原创,未经允许不得转载: 1. zookeeper 分布式锁应用场景及特点分析 2. zookeeper 分布式原理 3. curator 实现分布式锁 1. zookeeper 分布式锁: ...