博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异步回调发展(地狱回调)
阅读量:6201 次
发布时间:2019-06-21

本文共 1281 字,大约阅读时间需要 4 分钟。

最近在看koa的代码基本上前几句就会写道async于是想写下关于链式操作的发展

  • 第一次普通Js回调时代,所有的异步操作都会写道cb
function delay(fn) {    setTimeout(() => {        fn()        console.log('你好')    }, 0)}delay(() => {    console.log('kaishi')})复制代码

这个回调写在加载的delay函数内,如果是多重回调,那么恭喜,你会在delay函数中写上delay(()=>{}, ()=> {}, ()=>{})


  • 第二次时代promise,链式操作
function delay(name) { return new Promise((resolve, reject) => { setTimeout(()=> { resolve(name) }, 2000) }) } delay('laoxie').then((res) => { console.log(res) })
delay('laoxie').then((res) => { console.log(res) return delay('laoqin')}).then((res) => { console.log(res) return delay('laomeng')}).then((res) => { console.log(res)})复制代码

看上去简洁不少,但是链式操作咋一看比回调看上去舒服多了,但是如果太长看上去还是很别扭,尤其是是链式操作过长或者存在catch操作时

  • 第三次时代 ES7, async/await的出现基本上让看异步代码有看同步的感觉,唯一尴尬await必须后面接promise对象
function delay(name) {    return new Promise((resolve, reject) => {        setTimeout(()=> {            resolve(name)        }, 2000)    })}async function getdata() {    var val1 = await delay('haifu');    console.log(val1)    var val4 = 1    console.log(val4)    var val2 = await delay('hao');    console.log(val2)    var val3 = await delay('fangl');    console.log(val3)}getdata()复制代码

async包裹的函数,函数作用域内部的内容简直就是同步代码,顺著手往下写的感觉。

转载地址:http://pkaca.baihongyu.com/

你可能感兴趣的文章
如何查找JSP页面中的错误
查看>>
2016 年总结
查看>>
Python学习开始
查看>>
Android应用程序消息处理机制(Looper、Handler)分析(4)
查看>>
C++ 类成员的构造和析构顺序
查看>>
将String转化成Stream,将Stream转换成String
查看>>
java路径Java开发中获得非Web项目的当前项目路径
查看>>
Google API设计指南-资源名称
查看>>
最全React技术栈技术资料汇总(收藏)
查看>>
【工具使用系列】关于 MATLAB 遗传算法与直接搜索工具箱,你需要知道的事
查看>>
flex 学习笔记 stage
查看>>
Kali-linux Arpspoof工具
查看>>
java中三个类别加载器的关系以及各自加载的类的范围
查看>>
PDF文档页面如何重新排版?
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
python3 + Django + uwsgi + nginx 配置部署笔记
查看>>
UML设计一个电影票务销售系统(四)
查看>>
如何给VEEAM 7 分配角色权限
查看>>
AlphaGo Zero用它来调参?【高斯过程】到底有何过人之处?
查看>>
《Redis官方教程》Redis集群规范(二)
查看>>