思想:在promise的prototype上新增该方法

Promise.prototype.complete=function(callback){
            let p=this.constructor;
            return this.then(
                value=>p.resolve(callback()).then(()=>value),
                reson=>p.resolve(callback()).then(()=>{throw reson})
            )
        }

eg:

let p1=new Promise((resolve,reject)=>{
            let radom=Math.random()*10;
            setTimeout(()=>{
                if(radom%2===0){
                    let suc='接口请求成功';
                    resolve(suc);
                }else{
                    let err='接口请求失败';
                    reject(err);
                }
            },500)
        })

p1.then((data)=>{
            console.log(`${data}`);
        }).catch((err)=>{
            console.log(`${err}`)
        }).complete(()=>{
            console.log('无论成功或失败请求都已经完成');
        })

打印输出结果为:

接口请求失败
无论成功或失败请求都已经完成

结果和预期效果一致。

为promise部署complete方法相关推荐

  1. Intellij IDEA 4种配置热部署的方法【转】【补】

    热加载 热加载可以使代码修改后无须重启服务器,就可以加载更改的代码.(其实分java和非java代码,本处可以让java代码立即生效且不重启服务) 第1种:修改服务器配置,使得IDEA窗口失去焦点时, ...

  2. Java自动部署maven_Maven+Tomcat8 实现自动化部署的方法

    本文介绍了maven+tomcat8 实现自动化部署的方法,分享给大家,具体如下: 1.配置tomcat-users.xml 首先在tomcat里配置deploy的用户(tomcat根目录/conf/ ...

  3. [JavaScript] promise中.then()方法

    promise中.then()方法 promise的构造函数是同步执行 promise.then中的函数是异步执行 .then()异步执行 : 当此方法执行完后再执行内部的程序是避免了没有获取到数据 ...

  4. es6 Promise.prototype.catch()方法

    Promise.prototype.catch()方法 Promise.prototype.catch方法是.then(null, rejection)的别名,用于指定发生错误时的回调函数. getJ ...

  5. es6 Promise.prototype.then()方法

    Promise.prototype.then()方法 Promise 实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的.它的作用是为 Promise ...

  6. arm架构服务器安装系统教程,docker服务在arm平台上部署安装方法

    docker服务在arm平台上部署安装方法 本教程使用的硬件平台是全志A40I,操作系统采用的是ubuntu18.04,内核是3.10.108(内核很老导致docker兼容性不好) 1.获取最新版本的 ...

  7. Promise的使用方法

    PS~: Promise是一个构造函数,自己身上有all.reject.resolve等几个方法,原型上有then.catch等几个方法. Promise 对象用于表示一个异步操作的最终状态(完成或失 ...

  8. 配置idea自带的tomcat_Tomcat下载安装并部署到IDEA的教程(附带idea两种热部署设置方法)...

    使用Idea的时候,修改了代码,需要反复的重启Tomcat,查看效果,是不是贼烦?还记得刚上手idea的时候,瞎配置部署Tomcat,结果最后修改一个jsp都要重新启动服务器,我这金牛座程序员能忍?~ ...

  9. ajax get before,Ajax beforeSend和complete 方法

    .ajax({ beforeSend: function(){ // Handle the beforeSend event }, complete: function(){ // Handle th ...

最新文章

  1. iBATIS:xml中定义返回值
  2. redis springmvc mysql_SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置
  3. VTK:几何对象之Dodecahedron
  4. NHibernate中的API
  5. L1-008. 求整数段和
  6. SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)
  7. iOS 下ARC的内存管理机制
  8. P2550 [AHOI2001]彩票摇奖
  9. 7-174 两个有序链表序列的合并 (20 分)
  10. java 获取线程某个_Java中如何唤醒“指定的“某个线程
  11. macappstore登不上去_丈夫在外与多人暧昧,妻子气愤不已,可他却怒怼:这还不都是你逼的...
  12. JavaScript - 测试 jQuery
  13. VB连接SQL2000数据库代码
  14. CYQ.Data 轻量数据层之路 框架如何应对数据库变化
  15. 51单片机——LED发光二极管、蜂鸣器C语言入门编程
  16. 如何在WordPress中显示链接的实时预览
  17. (48)性能测试——聚合报告
  18. 干货:怎么样才能提升版式平面设计的大方美观?
  19. 自己对PID控制算法的一点见解
  20. echarts柱状图顶部数据显示气泡

热门文章

  1. 明汯投资裘慧明:除了评估超额收益多与少 还要关注稳定性和可持续性
  2. MySQL常用关键字
  3. 简历投递最佳时间点公布
  4. 快速了解STP生成树——作用,端口角色,端口状态,选举规则
  5. 自学实前后端践项目3 Spring Cloud微服务 8
  6. java爬虫面试题_Java 网络爬虫基础知识入门解析
  7. mysql delete from_MySQL中delete语句的使用及操作讲解
  8. python获取本月天数_如何获得本月的所有天数?
  9. Java培训学些什么?
  10. 1043: 绩点计算