摘要:自己最大的卖点就是异步回调,但是又总是在一路上撒泼一样在脱掉这一块外衣。
js 自己最大的卖点就是异步回调,但是又总是在一路上撒泼一样在脱掉这一块外衣。
1: 最原始的回调实现
const fs = require("fs") function readFileOne(path,callback){ fs.readFile(path,function(err,res){ if(!err) { callback.call(null,null, res.toString() ) }else{ callback.call(null,err) } }) } readFileOne("./test.json",function(err,res){ console.log(res) })
没毛病,上面的代码很容易就实现了读取文件的操作,回调函数很方便,可惜半路杀出一个promise
2: promise 实现异步写法
const fs = require("fs") function readText(){ return new Promise((resolve,reject)=>{ fs.readFile("./test.json",(err,res)=>{ if(err){ reject(err) }else{ resolve(res) } }) }) } readText().then((res)=>{ console.log(res.toString()) }).catch((e)=>{ console.log(e) })
也完全没有毛病,实现手段上更加流化,实现了异步代码同步化写,然毛线,又出来一个 Generate],这个是个什么东西?可以看我的另一篇文章 javascript中 迭代器是个什么东西?
3: generate 迭代器 实现异步
const fs = require("fs") // 8.x版本node内置将函数转化为`pronmise`的方法 const { promisify } = require("util") const proFiles = promisify(fs.readFile) function* readFile(path){ yield proFiles(path) } var g = readFile("./test.json") g.next().value.then((r)=>{ console.log(r.toString() ) })
4: generate 还没有用熟练,es7最终出了终极解决方法 Async
async 更加语义化比generator,也不单单是相对于异步请求,
const proFiles = promisify(fs.readFile) const readFile = async function (path){ let res = await proFiles(path) return res } readFile("./test.json").then((res)=>{ console.log(res.toString()) })
这个是最简单的 async同步使用方式,更加复杂的可以i查看;这里值是抛砖引玉
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/108508.html
摘要:用将倒放这次让我们一个用做一个小工具将动态图片倒序播放发现引力波的机构使用的包美国科学家日宣布,他们去年月首次探测到引力波。宣布这一发现的,是激光干涉引力波天文台的负责人。这个机构诞生于上世纪年代,进行引力波观测已经有近年。 那些年我们写过的爬虫 从写 nodejs 的第一个爬虫开始陆陆续续写了好几个爬虫,从爬拉勾网上的职位信息到爬豆瓣上的租房帖子,再到去爬知乎上的妹子照片什么的,爬虫...
摘要:是负责展示京东商品的落地页面。比如京东首页,正常情况加载完页面一共有多个节点,基本上全部用于展示商品信息广告图和内容布局,页面上的三方异步服务也比较少。 原文:https://keelii.github.io/2016/07/31/something-have-to-say-with-JD-item 简介 详情页也叫做单品页,域名以「item.jd.com/skuid.html」为格式...
阅读 1850·2023-04-26 00:59
阅读 3143·2021-11-15 18:10
阅读 3088·2021-09-22 16:02
阅读 777·2021-09-02 15:15
阅读 3730·2019-08-30 15:56
阅读 1928·2019-08-30 15:54
阅读 2870·2019-08-29 16:31
阅读 2046·2019-08-29 16:10