zoukankan      html  css  js  c++  java
  • 原生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);
    运行结果如下:
     
    
    
  • 相关阅读:
    wxpython自定义按钮
    wxPython修改文本框颜色
    strcat函数
    fopen作用
    Less 语法快速入门
    Echarts构建图表
    伪数组
    MVC,MVP,MVVM基本原理
    VUE常见指令
    Apply,Call,bind对比
  • 原文地址:https://www.cnblogs.com/liuliang-wifi/p/6832850.html
Copyright © 2011-2022 走看看