node.js異步編程的幾種模式

Node.js異步編程的幾種模式

以讀取文件爲例:javascript

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');
相關文章
相關標籤/搜索