zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    作业四 四则运算
    作业三
    作业二(3)
    作业二(2)
    作业二(1)
    作业一
    作业九
    每周更新学习进度表--第十一周
    每周更新学习进度表--第十周
    每周更新学习进度表--第九周
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3258378.html
Copyright © 2011-2022 走看看