zoukankan      html  css  js  c++  java
  • javascript实现异步编程的4种方法

    1、回调函数。

    2、事件监听 。  思路:采用事件驱动模式。任务的执行不取决于代码的顺序,而取决于某个事件是否发生

    3、观察者模式 (发布/订阅模式)   代码如下:

    jQuery.subscribe("done", f2);
    
     function f1(){
    
        setTimeout(function () {
    
          // f1的任务代码
    
          jQuery.publish("done");
    
        }, 1000);
    
      }
    
    jQuery.unsubscribe("done", f2);

    jQuery.publish("done")的意思是,f1执行完成后,向"信号中心"jQuery发布"done"信号,从而引发f2的执行。

    此外,f2完成执行后,也可以取消订阅(unsubscribe)。

    注:这种观察者模式的性质与"事件监听"类似,但是明显优于后者。因为我们可以通过查看"消息中心",了解存在多少信号、每个信号有多少订阅者,从而监控程序的运行。

    4、Promises对象

    思路:每一个异步任务返回一个Promise对象,该对象有一个then方法,允许指定回调函数。比如,f1的回调函数f2,可以写成:

    get:(opt)=>{
      return new Promise((resolve,reject)=>{
            if(opt.ve){
              opt.ve['loading'] = true;
            }
            axios.get(fliterUrl(opt.url)).then((response)=>{
                if(opt.ve){
                  opt.ve['loading'] = false;
                }    
                resolve(response);
            }).catch((error)=>{
              if(opt.ve){
                opt.ve['loading'] = false;
              }
              reject(error);
            })
       })

      

  • 相关阅读:
    JUC锁框架_AbstractQueuedSynchronizer详细分析
    npm的镜像替换成淘宝
    MHA+keepalived集群环境搭建
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    二进制中1的个数
    矩形覆盖
    OS之进程管理---多线程模型和线程库(POSIX PTread)
  • 原文地址:https://www.cnblogs.com/ivan5277/p/10020125.html
Copyright © 2011-2022 走看看