Promise的异常穿透和中断Promise的链式请求

简介: 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不能够输出。

相关文章
|
4月前
|
存储 前端开发 JavaScript
【面试题】面试官问:如果有100个请求,你如何使用Promise控制并发?
【面试题】面试官问:如果有100个请求,你如何使用Promise控制并发?
|
4月前
|
存储 前端开发 JavaScript
面试官问:如果有100个请求,你如何使用Promise控制并发?
面试官问:如果有100个请求,你如何使用Promise控制并发?
|
2月前
|
前端开发 JavaScript API
|
4月前
|
前端开发
Promise的链式调用
Promise的链式调用是指在一个Promise对象上连续调用多个then方法的过程。通过链式调用,可以将多个异步操作按照顺序执行,并且可以在每个操作完成后处理返回的结果。
30 0
|
6月前
|
前端开发 JavaScript API
Promise封装Ajax请求
Promise封装Ajax请求
30 0
|
6月前
|
JavaScript 前端开发 API
vue项目中配置简单的代理与promise,并简单封装请求接口
vue项目中配置简单的代理与promise,并简单封装请求接口
26 0
|
9月前
|
前端开发 程序员
promise的链式调用和promise的嵌套的实现
promise的链式调用和promise的嵌套的实现
141 0
|
前端开发
手写Promise最简20行版本,实现异步链式调用。(重构版)
在面试的时候,经常会有面试官让你实现一个 Promise,如果参照 A+规范来实现的话,可能面到天黑都结束不了。
|
前端开发 小程序 API
微信小程序开发实战(网路请求Promise化)
微信小程序开发实战(网路请求Promise化)
微信小程序开发实战(网路请求Promise化)
|
前端开发
重新手写promise,理解核心的异步链式调用原理
重新手写promise,理解核心的异步链式调用原理
147 0