• Javascript异步编程


    1.回调函数

    假定有两个函数f1和f2,后者等待前者的执行结果。如果f1是一个很耗时的任务,可以考虑把f2写成f1的回调函数。

    1   function f1(callback){
    2     setTimeout(function () {
    3       // f1的任务代码
    4       callback();
    5     }, 1000);
    6   }
    7    //执行代码就变成下面这样:
    8   f1(f2);

    采用这种方式,我们把同步操作变成了异步操作,f1不会堵塞程序运行,相当于先执行程序的主要逻辑,将耗时的操作推迟执行。

    回调函数的优点:简单、容易理解、部署

    缺点:不利于代码的阅读和维护,各个部分之间高度耦合,流程会很混乱,而且每个任务只能指定一个回调函数。

    2.事件驱动

    任务的执行不取决于代码的顺序,而取决于某个事件是否发生。 

    1  f1.on('done', f2);
     1   function f1(){
     2 
     3     setTimeout(function () {
     4 
     5       // f1的任务代码
     6 
     7       f1.trigger('done');
     8 
     9     }, 1000);
    10 
    11   }

    首先,为f1绑定一个事件。执行完成任务后立即触发done事件,从而开始执行f2。

    优点:比较容易理解,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以去耦合,有利于实现模块化。

    缺点:整个程序都要变成事件驱动型,运行流程会变得很不清晰。

    转载:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html

  • 相关阅读:
    使用servicename连接Oracle数据库
    使用SID连接Oracle数据库
    使用xlrd模块
    【Project Euler 8】Largest product in a series
    Git使用帮助
    【Project Euler 1】Multiples of 3 and 5
    VSCode使用新体验
    导出牛顿引力形式为平方反比的两种方式
    NOIP2018游记
    即将退役声明
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3258378.html
Copyright © 2020-2023  润新知