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');
原文地址:https://www.cnblogs.com/billyu/p/7885123.html