Generator的核心 “计步功能” 亦可解决异步嵌套的问题,一定情况下的封装可替代Promise
复制代码

Promise的简易实现,可看该篇文章

【库】Promise的简便实现,15行代码优雅解决异步嵌套


一、核心函数的定义

function *AJAX (opt) {for (let i = 0; i < opt.length; i++) {let {url, data, success} = opt[i]yield API[url](data, success)}
}
复制代码

也是先传参注册,不过因为Generator 自带闭包,所以代码量非常简洁实用


二、调用阶段(Demo代码全贴)

<!DOCTYPE HTML>
<html>
<head><meta charset="utf-8">
</head>
<body></body>
<script>/* 核心函数封装 */function *AJAX (opt) {for (let i = 0; i < opt.length; i++) {let {url, data, success} = opt[i]yield API[url](data, success)}}/* AJAX API config 封装 */const API = {'/m/zzg/getList' (data, call) {setTimeout(() => {call({data: 'ajax1返回的数据'})}, 1000)},'/m/zzg/getUser' (data, call) {setTimeout(() => {call({data: 'ajax2返回的数据'})}, 2000)},'/m/zzg/saveUser' (data, call) {setTimeout(() => {call({data: 'ajax3返回的数据'})}, 1000)}}/* 外部调用需要嵌套的AJAX API */const Generator = AJAX([{url: '/m/zzg/getList',data: {},success: res => {console.log(res.data)Generator.next()}}, {url: '/m/zzg/getUser',data: {},success: res => {console.log(res.data)Generator.next()}}, {url: '/m/zzg/saveUser',data: {},success: res => {console.log(res.data)}}])Generator.next() // 执行
</script>
</html>复制代码

以下是返回的结果

这里就达到了嵌套的目的,并且代码上没有难看的阶梯状结构。


关于

make:o︻そ╆OVE▅▅▅▆▇◤(清一色天空)

blog:http://blog.csdn.net/mcky_love

掘金:https://juejin.im/user/59fbe6c66fb9a045186a159a/posts


结束语

Generator也好,模拟Promise的实现也好,优势在于可读性以及扩展性,你说为啥不直接用Promise?不好意思,用不惯╭(╯^╰)╮。

【库】Generator:8行代码优雅解决异步嵌套相关推荐

  1. react hooks使用_我如何使用React Hooks在约100行代码中构建异步表单验证库

    react hooks使用 by Austin Malerba 奥斯汀·马勒巴(Austin Malerba) 我如何使用React Hooks在约100行代码中构建异步表单验证库 (How I bu ...

  2. 惊了!7 行代码优雅地实现 Excel 文件生成下载功能

    欢迎关注个人微信公众号: 小哈学Java 个人网站: www.exception.site/essay/how-t- 目录 一.前言 二.Apache poi.jxl 的缺陷 三.阿里出品的 Easy ...

  3. @excel注解_惊了!如何通过阿里 EasyExcel 7 行代码, 优雅地实现 Excel 文件导出功能?...

    目录 一.前言 二.Apache poi.jxl 的缺陷 三.阿里出品的 EasyExcel,安利一波 四.EasyExcel 解决了什么 五.快速上手 六.特殊场景支持 七.Web 下载示例代码 八 ...

  4. 7 行代码优雅地实现 Excel 文件导出功能?

    文章目录 一.前言 二.Apache poi.jxl 的缺陷 三.阿里出品的 EasyExcel,安利一波 四.EasyExcel 解决了什么 五.快速上手 5.1 添加依赖 5.2 七行代码搞定 E ...

  5. 惊了!7 行代码优雅地实现 Excel 文件导出功能?

    目录 一.前言 二.Apache poi.jxl 的缺陷 三.阿里出品的 EasyExcel,安利一波 四.EasyExcel 解决了什么 五.快速上手 六.特殊场景支持 七.Web 下载示例代码 八 ...

  6. 惊了!如何通过阿里 EasyExcel 7 行代码, 优雅地实现 Excel 文件导出功能?

    目录 一.前言 二.Apache poi.jxl 的缺陷 三.阿里出品的 EasyExcel,安利一波 四.EasyExcel 解决了什么 五.快速上手 六.特殊场景支持 七.Web 下载示例代码 八 ...

  7. 精选10个Python库,几行代码轻松搞定探索性数据分析!

    点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! 探索性数据分析是数据科学模型开发和数据集研究的重要组成部分之一.在拿到一个 ...

  8. GitHub开源的ImageAI 库:几行代码可实现目标对象识别

    目录​​​​​​​ 1.图像预测 2.物体检测 3.视频对象检测和跟踪 ImageAI是一个Python库,旨在使开发人员能够使用简单的几行代码构建具有自包含深度学习和计算机视觉功能的应用程序和系统. ...

  9. 分享一个开源的JavaScript统计图表库,40行代码实现专业统计图表

    这可能是史上最简单易用的开源统计图表绘制库了.柱状图,饼状图,点状图等等您能想到的类型全部支持. 这个开源库的官网:http://www.chartjs.org/ 直接看如何只用40行代码就实现专业的 ...

最新文章

  1. 使用PHP+Sphinx建立高效的站内搜索引擎
  2. 面试官:谈一下你对DDD的理解?我:马什么梅?
  3. ThinkPHP快捷方法使用总结
  4. where is list binding done for Opportunity S2 view default 20 returns
  5. 订单派送中多久能送到_美森卡派送到仓库后多久能上架呢?
  6. Jquery中如何获取元素的文本,值,属性和内容
  7. oracle表回退语句,5 Oracle笔试题
  8. Python风格总结:ASCII码与字符相互转换
  9. 昭阳k42-80可以装linux么,华硕K420JC 双显卡 本本 能装ubuntu吗
  10. HALCON 20.11:学习笔记---一维测量(Measuring)
  11. LR中并发用户和集合点
  12. WIN7使用各种激活软件都不管用的解决办法
  13. 用python来开发webgame服务端(2)
  14. Linux:使用libgen.h:basename,dirname
  15. 什么是软件EV代码签名证书
  16. R语言威尔科克森(Wilcoxon)分布
  17. 【linux kernel】linux内核如何唤醒线程
  18. 信奥中的数学 数论篇 相关资料汇总(2022.07.07)
  19. 太牛逼了,Python和算法简直是绝配
  20. Mysql出现问题:ERROR 10055:Lost connection to MySQL server at ‘reading initial communication packet‘解决方案

热门文章

  1. 深度学习机器学习面试题——自然语言处理NLP,transformer,BERT,RNN,LSTM
  2. 补一个 pima-indians-diabetes.data
  3. 可以云端储存的便签软件 2022能云端同步的便签app
  4. python popen 参数_Python – 如何传递一个字符串到subprocess.Popen(使用stdin参数)?
  5. 附一、MDT 2013 Update 1 引导镜像生成出错的解决办法
  6. 数据链路层功能之组帧和透明传输
  7. 装包seurat、singR
  8. 医疗影像容积重建-物体坐标系和渲染图像坐标系
  9. C4D新手党使用小技巧——如何给对象着色以及添加材质或贴图?如何输出PNG格式?
  10. C++: 团体程序设计天梯赛 (一帮一)