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

相关文章
|
7月前
|
存储 前端开发 JavaScript
【面试题】面试官问:如果有100个请求,你如何使用Promise控制并发?
【面试题】面试官问:如果有100个请求,你如何使用Promise控制并发?
153 0
|
1月前
|
前端开发 JavaScript
使用 try-catch 语句来捕获 Promise 中的异常
【10月更文挑战第26天】使用try-catch语句捕获Promise中的异常是一种非常实用的技术,能够使异步代码的错误处理更加清晰、可控,提高程序的可靠性和稳定性。在实际开发中,合理地运用try-catch语句以及其他相关的错误处理机制,可以有效地应对各种可能出现的异常情况,为用户提供更好的体验。
|
1月前
|
JSON 前端开发 JavaScript
处理 Promise 中的异常
【10月更文挑战第26天】处理 Promise 中的异常需要综合运用 catch 方法、在 then 方法中正确处理错误、避免未捕获的异常以及合理使用 async/await 与 try/catch 等方式。通过良好的异常处理机制,可以提高 Promise 异步操作的可靠性和程序的稳定性,为用户提供更优质的体验。
|
7月前
|
前端开发
Promise链式调用与错误处理
Promise链式调用是处理异步操作的方式,它按顺序执行多个任务,每个任务返回Promise对象。通过`.then()`指定成功后的操作,`.catch()`处理错误。示例代码展示了如何使用fetch获取数据,根据状态码解析响应并处理数据,错误则通过`.catch()`捕获。另一个例子定义了三个异步函数构成Promise链,依次执行并处理结果,错误同样由`.catch()`统一管理。
|
4月前
|
JavaScript 前端开发 数据安全/隐私保护
如何使用request-promise在发送请求时使用代理?
以上方法演示了如何在发送请求时使用 `request-promise`结合代理服务,适用于需要通过代理访问网络资源的场景。
97 0
|
4月前
|
存储 JSON 前端开发
JavaScript异步编程3——Promise的链式使用
JavaScript异步编程3——Promise的链式使用
44 0
|
7月前
|
存储 前端开发 JavaScript
面试官问:如果有100个请求,你如何使用Promise控制并发?
面试官问:如果有100个请求,你如何使用Promise控制并发?
384 0
|
7月前
|
前端开发 JavaScript
Promise的链式调用案例讲解
Promise的链式调用案例讲解
|
7月前
|
前端开发 JavaScript API
|
7月前
|
前端开发
Promise的链式调用
Promise的链式调用是指在一个Promise对象上连续调用多个then方法的过程。通过链式调用,可以将多个异步操作按照顺序执行,并且可以在每个操作完成后处理返回的结果。
70 0
下一篇
DataWorks