资讯专栏INFORMATION COLUMN

前端异步那些年

sshe / 1584人阅读

摘要:自己最大的卖点就是异步回调,但是又总是在一路上撒泼一样在脱掉这一块外衣。

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

相关文章

  • Evil Python

    摘要:用将倒放这次让我们一个用做一个小工具将动态图片倒序播放发现引力波的机构使用的包美国科学家日宣布,他们去年月首次探测到引力波。宣布这一发现的,是激光干涉引力波天文台的负责人。这个机构诞生于上世纪年代,进行引力波观测已经有近年。 那些年我们写过的爬虫 从写 nodejs 的第一个爬虫开始陆陆续续写了好几个爬虫,从爬拉勾网上的职位信息到爬豆瓣上的租房帖子,再到去爬知乎上的妹子照片什么的,爬虫...

    Turbo 评论0 收藏0
  • 前端是有多难?

    摘要:我之前从来没想过高阶函数怎么在里面用,直到看了源码吃了一惊,卧槽,还能这么写还有说烂了的柯里化。然而也加重了前端的负担。毕竟和前端靠的近,人家问起来自己不会多尴尬。好了,一个前端工程师做到这份上也算是仁至义尽了。 最近感觉追不动前端的发展了,写篇文章感叹一下。 HTML 我知道有一些学校会教一些简单的网页制作,就是用 Dreamweaver 点一点的那种。大多也会留作业,最后交作业的时...

    habren 评论0 收藏0
  • 那些的体验技术部

    摘要:随着业务的爆发,团队人数迅速增长起来,团队名也从前端开发部改名成体验技术部,意在体现前端工程师的核心竞争力用技术解决产品体验问题。前后端分离的研发模式在社区流行起来,体验技术部最先实践的是基于的应用层方案。2008 年对中国人是复杂的一年,冰灾,大地震,奥运会接踵而至。对玉伯来说也一样,赶在奥运会排查临时人口之前,玉伯从北京中科院软件所离开,凭着自己几年来在程序开发上的经历和对新兴前端行业的...

    sean 评论0 收藏0
  • 京东单品页前端开发那些不得不说的事儿

    摘要:是负责展示京东商品的落地页面。比如京东首页,正常情况加载完页面一共有多个节点,基本上全部用于展示商品信息广告图和内容布局,页面上的三方异步服务也比较少。 原文:https://keelii.github.io/2016/07/31/something-have-to-say-with-JD-item 简介 详情页也叫做单品页,域名以「item.jd.com/skuid.html」为格式...

    FleyX 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<