node传统读取文件和promise,async await,
2018-06-24 02:03:51来源:未知 阅读 ()
先上传统文件加载方式代码,传统方式在处理多层嵌套时代码比较混乱
const fs = require('fs') //引入文件系统 function readFile (cb) { fs.readFile('./package.json',(err,data) => { if(err) return console.log(err) cb(null,data) }) } //回调函数 readFile((err, data) => { if(!err) { data = JSON.parse(data) console.log(data.name) } })
第二阶段 promsie 新建一个promise对象读取文件成功是返回 resolve(data) 失败是返回 rejext, promise.then里可以得到返回结果
function readfileAsync (path) { return new Promise((resolve,reject) => { fs.readFile(path,(err,data) => { if(err){ reject(err) } else { resolve(data) } }) }) } readfileAsync('./package.json').then(data => { data = JSON.parse(data) console.log(data.name) }) .catch(err => { console.log(err); })
co + generator function
Generator (*)函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态,每次调用
解释generator函数执行的简单方法
function* helloWorldGenerator() { yield 'hello'; yield 'world'; return 'ending'; } var hw = helloWorldGenerator(); hw.next() // { value: 'hello', done: false } hw.next() // { value: 'world', done: false } hw.next() // { value: 'ending', done: true } hw.next() // { value: undefined, done: true }
co.js 保证 *函数中的 yield方法轮循执行,每次执行均返回的是promise对象,这里同时使用 node中的util方法中的promisify 代替传统的promise,nodejs8.0以上
const util = require('util') const co = require('co') co(function *() { let data = yield util.promisify(fs.readFile)('./package.json') //使用node util 中的promisify实例化 fs.readFile方法同时直接返回结果 data = JSON.parse(data) console.log(data.name) })
async 加载方式 nodejs7.6以上版本 用async await 把异步加载方式同步的写法实现,实际上是对 promsie的封装
const util = require('util') const readAsync = util.promisify(fs.readFile) async function init () { let data = await readAsync('./package.json') data = JSON.parse(data) console.log(data.name) } init()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Javascript Ajax异步读取RSS文档具体实现 2020-02-25
- nodejs中如何使用async模块 2020-02-22
- nodejs的express自动生成项目框架的方法 2020-02-20
- Node.js中环境变量process.env的一些事详解 2020-01-17
- 详解node.js进行web开发的操作方法 2019-12-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash