等待者模式

概念

等待者模式或者等待者对象指的是多个异步逻辑无法确认先后执行的顺序以及时机时,而我们增加对异步逻辑的监听,当每个异步状态发生变化时,进行一次确认状态,然后根据结果来决定是否执行某动作。

我们常见常用的Promise.all对象就是等待者模式的一种最佳实践。

本文codepen地址:https://codepen.io/robinson90/pen/YzPQaoe

代码实现

let Waiter = function(){
   
  // 定义内部的监听对象数组,成功回调数组,失败回调数组
	let dfd = [],doneArr = [], failArr= [],
      slice = Array.prototype.slice,that = this;
  let Primise = function(){
   
  	this.resolved = false 
    this.rejected = false
  }
  Primise.prototype = {
   
    resolve:function(){
   
      // 设置当前对象解决
      this.resolved = true
      //如果没有监听对象 直接返回
      if(!dfd.length){
   
      	return
      }
      for(let i = dfd.length -1 ;i>=0;i--){
   
        // 判断监听对象中是否有未解决或者解决失败的 如果有直接返回 不执行
        if(dfd[i] && !dfd[i].resolved || dfd[i].rejected){
   
        		return 
        }
        // 删除监听对象
        dfd.splice(i,1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值