Js使用Promise实现阻塞任务

        业务背景,在付款码支付的场景中,用户亮码收银人员扫码下单,这个时候会出现用户来不及输密码,后端的接口已经返回数据,后端返回数据的响应码是非成功状态时候页面的弹框无法自动关闭,这个时候需要前端取轮询后端接口,查询支付状态,根据支付状态自动关闭弹框。传统方式使用setTimeout配合回调函数,定时轮询,这种方式对于轮询次数无法控制,且还要处理定时器清除的等诸多问题,今天尝试使用Promise一步编程实现。

一、LoopSleep类定义

class  LoopSleep{
   constructor(sec,count) {
     this.sec = sec  ///阻塞时长 秒
     this.count = count /// 任务执行次数
   }
   
    /**睡眠函数*/
   sleep() {
     return new Promise(resolve => setTimeout(resolve,this.sec));
   }
    
   /**异步函数调用  async与await 要承兑出现  */        
   async  handleApi(callback){         
      console.log("handleApi--start->"+(new Date()));          
      for (let i=0;i<this.count;i++){
         await this.sleep()
         console.log("指行轮询第"+i+"次")
         //执行业务的函数
          callback()
      }          
      console.log("handleApi--end->"+(new Date()));
   }
}

二、模拟调用

let httpGetData=()=>{
   ///调用后端接口         
   /// console.log("调用接口处理页面逻辑");        
}

/// 睡眠5s,轮询6,整个过程耗时30s
let loopSleep = new LoopSleep(5000,6)
loopSleep.handleApi(httpGetData)  

       30s轮询任务执行完毕

相关推荐

  1. js手写实现 Promise.all

    2024-03-30 01:18:03       22 阅读
  2. Promise实现

    2024-03-30 01:18:03       18 阅读
  3. js事件循环以及promise

    2024-03-30 01:18:03       30 阅读
  4. 使用SpringBoot实现定时任务

    2024-03-30 01:18:03       23 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-30 01:18:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 01:18:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 01:18:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 01:18:03       20 阅读

热门阅读

  1. js中遍历数组,map方法和reduce方法有什么区别?

    2024-03-30 01:18:03       17 阅读
  2. 为什么编码器-解码器结构能够保存空间信息

    2024-03-30 01:18:03       19 阅读
  3. <个人笔记>位运算

    2024-03-30 01:18:03       19 阅读
  4. Frida相关脚本代码样例(Windows下经过测试)

    2024-03-30 01:18:03       20 阅读
  5. 前端通用命名规范和Vue项目命名规范

    2024-03-30 01:18:03       18 阅读
  6. GIT使用小结

    2024-03-30 01:18:03       17 阅读
  7. 面试宝典:PHP中的Yac技术深度分析

    2024-03-30 01:18:03       17 阅读
  8. 什么是FLV

    2024-03-30 01:18:03       19 阅读
  9. 正则表达式

    2024-03-30 01:18:03       15 阅读
  10. 正则匹配/正则表达式

    2024-03-30 01:18:03       24 阅读
  11. Rust引用借用 vs 原始指针

    2024-03-30 01:18:03       17 阅读
  12. 库函数的模拟实现

    2024-03-30 01:18:03       18 阅读