原生JS模拟Promise实现异步编程

 1           function ajaxA(success){
 2                 setTimeout(function(){
 3                     console.log("AAAAAAAAAA");
 4                     success();
 5                 }, 3000);
 6             }
 7                         
 8             function ajaxB(success){
 9                 setTimeout(function(){
10                     console.log("BBBBBBBBBB");
11                     success();
12                 }, 2000);
13             }
14             
15             function ajaxC(success){
16                 setTimeout(function(){
17                     console.log("CCCCCCCCCC");
18                     success();
19                 }, 1000);
20             }
21             
22             function ajaxD(){
23                 setTimeout(function(){
24                     console.log("DDDDDDDDD");
25                 }, 2000);
26             }
         //模拟异步编程效果
27 function MyPromise(func){ 28 var self = this; 29 var count = 0; 30 this.cbklist = []; 31 this.then = function(callback){ 32 this.cbklist.push(callback); 33 return this; 34 } 35 this.success = function(){ 36 if(count == self.cbklist.length) return; 37 self.cbklist[count++](self.success); 38 } 39 setTimeout(function(){ 40 func(self.success); 41 },0); 42 } 43 //强制程序按then的顺序执行 44 new MyPromise(ajaxA).then(ajaxB).then(ajaxC).then(ajaxD);
运行结果如下:
 

 

 
 

 

转载于:https://www.cnblogs.com/liuliang-wifi/p/6832850.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值