• 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);
            })
       })

      

  • 相关阅读:
    hdu 1426(DFS+坑爹的输入输出)
    hdu 1430(BFS+康托展开+映射+输出路径)
    hdu 1664(数论+同余搜索+记录路径)
    BestCoder Round #86 二,三题题解(尺取法)
    hdu 1226(同余搜索)
    poj 1426(同余搜索)
    poj 2251(同余)
    hdu 1044(bfs+dfs+剪枝)
    hdu 1455(DFS+好题+经典)
    安装centos7后不能联网
  • 原文地址:https://www.cnblogs.com/ivan5277/p/10020125.html
Copyright © 2020-2023  润新知