zoukankan      html  css  js  c++  java
  • 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的异常穿透
    
    

    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)
    })
    
    作者:明月人倚楼
    出处:https://www.cnblogs.com/IwishIcould/

    想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!

    万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!

    想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

    支付宝
    微信
    本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    linux 内核定时器 timer_list详解
    linux2.6源码分析之解压内核映像 head.s
    [C#]我自己写的一个对字节中每位进行修改值的函数
    Android Intent调用大全
    proguard 原理
    何为夫妻?何为家?何为幸福?
    生命只是瞬间,而有些人终究是过客?(转)
    bind端口复用
    在android开发中应该如何管理内存或者是在开发过程中应该注意哪些问题来较少OOM?
    W/ActivityManager( 1419): Activity is launching as a new task, so cancelling activity result.
  • 原文地址:https://www.cnblogs.com/IwishIcould/p/14672644.html
Copyright © 2011-2022 走看看