zoukankan      html  css  js  c++  java
  • node.js异步编程的几种模式

    Node.js异步编程的几种模式

    以读取文件为例:

    1.callback function

    const fs = require('fs');
    
    //callback function
    fs.readFile('package.json',(val,err) => {
        if(err) throw  err;
        console.log(val);
    });
    

    2.Promise对象

    //promise
    let fs_promise = function(file){
        return new Promise((resolve,reject)=>{
            fs.readFile(file,(val,err) => {
                if(err) reject(err);
                resolve(val);
            });
        });
    };
    
    fs_promise('package.json')
        .then((data) => console.log(data));
    

    3.Generator函数 + Promise对象

    //Generator + promise
    function* gen(file){
        return yield fs_promise(file);
    }
    
    let g = gen('package.json');
    g.next();
    

    4.Generator函数 + Promise对象 + co函数库

    //Generator + promise + co
    const co = require('co');
    co(gen('package.json'));
    

    5. Generator函数 + Thunk函数 + co函数库

    //Generator + thunk + co
    let fs_thunk = function(file){
      return function(callback){
          return fs.readFile(file,callback);
      }
    };
    
    function* gen(file){
        let f1 = yield fs_thunk(file);
        console.log(f1.toString());
    }
    
    const co = require('co');
    co(gen('package.json'));
    

    6. async/await

    //async + await  NOT SUPPORT YET
    async function readFileAsync(file){
        return await fs.readFile(file);
    }
    
    readFileAsync('package.json');
  • 相关阅读:
    每日随笔
    每日随笔
    每日随笔
    JavaSE 类加载机制
    MySQL 索引
    JavaSE 线程的生命周期
    JVM堆内存(heap)详解
    Redis 学习笔记(三)哨兵模式配置高可用和集群
    sqlserver数据库连接数相关问题
    多项式多点求值
  • 原文地址:https://www.cnblogs.com/billyu/p/7885123.html
Copyright © 2011-2022 走看看