• 【读书笔记】《深入浅出nodejs》第四章 异步编程


    1. 异步编程的基础 -- 函数式编程

      (1)高阶函数 -- 是可以把函数作为参数,或是将函数作为返回值的函数。

      (2)偏函数用法 -- 创建一个调用另外一个部分 -- 参数或变量已经预置的函数 -- 的函数(通过指定部分参数来产生一个新的定制函数的形式就是偏函数)。

    2. 异步编程的优势与难点

      (1)优势:

        基于事件驱动的非阻塞I/O模型。

      (2)劣势:

        A. 异常处理 -> 必须执行调用者传入的回调函数,正确传递回异常调用者判断。

        B. 函数嵌套过深

        C. 阻塞代码

        D. 多线程编程

        E. 异步转同步

    3. 异步编程解决方案

      (1)事件发布/订阅模式(事件监听器模式)-- 常常用来解耦业务逻辑,事件发布者无需关注订阅的侦听器如何实现业务逻辑,甚至都不用关注有多少个侦听器存在,数据通过消息的方式可以很灵活的传递。

        event模块:addListener/on()、once()、removeListener()、emit()等基本的事件监听模式的方法实现。

    // 订阅
    emitter.on("event1",function(message){
       console.log(message);     
    })
    
    // 发布
    emitter.emit("event","I am message!");

      (2)Promise/Deferred模式 -- 先执行异步调用,延迟传递处理的方式

        Promise作用于外部,通过then()方法暴露给外部以添加自定义逻辑。

        Deferred主要用于内部,用于维护异步模型的状态。

      (3)流程控制库

        A. 尾触发 应用最多的地方是Connect的中间件 -- 十分适合处理网络请求的场景。将复杂的处理逻辑拆解为简介、单一的处理单元,逐层次地处理请求对象和响应对象。

        B. async -- 提供了20多个方法用于处理异步的各种协作模式

          异步的串行执行

          异步的并行执行

          异步的调用依赖处理

          自动依赖处理

        C. Step -- 知名流程控制库,比async更轻量

        D. wind

    4. 异步并发控制

      拒绝模式

      超时控制

        

  • 相关阅读:
    关于PPTP不能打开部分网页
    在MarS Board上搭建PPTP
    Mars Board上无法使用apt-get
    在MarS board上烧录系统镜像
    PHP-变量(1)
    在KEIL 4.72中使用STM32的3.5固件库
    android SDK中java环境变量配置
    android SDK中打开AVD时提示PANIC: Could not open:XX
    ckplayer通过Mod-H264支持随意拖动功能
    430学习笔记-内置ADC12
  • 原文地址:https://www.cnblogs.com/libinfs/p/5916694.html
Copyright © 2020-2023  润新知