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');
  • 相关阅读:
    数学—快速幂
    离散化
    造树计划——线段树
    Python map()函数
    python的discard和remove方法
    C++学习笔记之NULL vs nullptr
    哈姆雷特单词的排名
    读书笔记—《网络是怎么连接的》4.11
    滑动窗口—UVA11572 唯一的雪花 Unique Snowflakes
    javascript基础语法1.0
  • 原文地址:https://www.cnblogs.com/billyu/p/7885123.html
Copyright © 2011-2022 走看看