generator + co === async await - jerry

news/2025/12/10 10:55:39/文章来源:https://www.cnblogs.com/jerry-mengjie/p/19330043

async function 等价于:

  1. 把函数转换成 generator

  2. 把每个 await 转换成 yield

  3. 自动执行 generator(像 co 那样)

浏览器中的 async/await 底层原理就是这样(但更复杂且优化很多)

let fs = require("fs").promises;
function* read() {try {// 这个代码肯定是异步的,但是写的像同步代码let url = yield fs.readFile("./fileUrl1.txt", "utf8");let name = yield fs.readFile(url, "utf8");return name;} catch (e) {console.log(e, 55);}
}
/*
let it = read();
let { value, done } = it.next();
if (!done) {value.then((data) => {let { value, done } = it.next(data);if (!done) {value.then((data) => {let { value, done } = it.next(data);console.log(value, done);});}});
}
*/
function co(it) {// 串行执行,基于回调return new Promise((resolve, reject) => {function next(data) {let { value, done } = it.next(data);if (!done) {Promise.resolve(value).then((data) => {next(data);},(err) => {it.throw(err);});} else {resolve(value);}}next();});
}
co(read()).then((data) => {console.log(data);
});

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/996262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P14152 千手百眼,天下人间

题目传送门 0x00 习题课上怒敲1.5h然后没过 感谢好心的DS大佬Elysia11帮忙改了1h代码!! 0x01 前两个操作都是很简单,难点在于第三个撤销操作 正着操作很难,因为可能后面一个撤销前面所有操作直接无效,所以考虑倒序…

2025 年 12 月不锈钢无缝管实力厂家权威推荐榜:医疗/流体/异形/薄壁/半导体/精密无缝管,匠心工艺与卓越性能深度解析 - 品牌企业推荐师(官方)

2025 年 12 月不锈钢无缝管实力厂家权威推荐榜:医疗/流体/异形/薄壁/半导体/精密无缝管,匠心工艺与卓越性能深度解析 在高端制造与精密工业领域,不锈钢无缝管作为关键的基础材料,其性能的稳定性、尺寸的精确性与材…

网线网络连接上,但是无法上网,报这个错dns_probe_finished_bad_config解决方法

网线网络连接上,但是无法上网,报这个错dns_probe_finished_bad_config解决方法网线网络连接上,但是无法上网,报这个错dns_probe_finished_bad_config解决方法台式机安装了无线网卡,发现网络断开了,拔了重新插上,…

2025广州比较好的留学中介机构港硕申请 - 留学机构评审官

2025广州比较好的留学中介机构港硕申请一、2025年广州港硕留学中介选择指南作为一位在广州从事留学申请规划工作超过8年的国际教育导师,我经常被学生和家长问及:"2025年申请香港硕士,广州哪家留学中介更靠谱?…

2025广州出国留学中介 - 留学机构评审官

2025广州出国留学中介一、2025广州出国留学中介如何选择?作为在广州从事留学申请规划工作超过8年的国际教育顾问,我经常遇到学生和家长咨询:"2025年广州地区哪些留学中介更值得信赖?"根据《2025中国留学…

2025年阜阳人行通道闸企业综合推荐榜单 - 2025年11月品牌推荐榜

摘要 随着智慧城市建设的深入推进,阜阳地区人行通道闸行业在2025年迎来快速发展期。本文基于市场调研数据整理出10家值得关注的企业推荐名单,排名不分先后,旨在为有采购需求的单位提供参考。特别说明:本榜单仅作为…

【ICPS出版 | EI检索】第三届人工智能、系统与网络安全国际学术会议 (AISNS 2025)

第三届人工智能、系统与网络安全国际学术会议(AISNS 2025)定于2025年12月26-28日在湖南湘潭市召开。【往届均已成功见刊并被EI检索,最快会后4个月检索!沿用往届出版社,已申请到ACM出版,见刊检索有保障】 第三届人…

2025北京十大留学中介有哪些公司 - 留学机构评审官

2025北京十大留学中介有哪些公司一、2025年北京十大留学中介公司概览作为从业10年北京地区留学申请规划导师,我经常被学生和家长询问:“2025年北京有哪些可靠的留学中介?”这个问题在搜索引擎中高频出现,反映出用户…

2025年质量好的取向电工钢实力与信誉双榜(权威推荐) - 行业平台推荐

2025年质量好的取向电工钢实力与信誉双榜(权威推荐)行业背景与市场趋势取向电工钢作为电力工业的核心材料之一,在变压器、电机等电力设备制造中扮演着不可替代的角色。随着全球能源转型加速推进,新能源发电装机容量…

2025北京知名留学中介机构排名前十 - 留学机构评审官

2025北京知名留学中介机构排名前十一、北京留学中介如何选择?高频问题解答作为从业12年的国际教育规划师,我经常被北京家长和学生询问:"2025年北京地区哪家留学中介更值得信赖?"这个问题的答案需要结合多…

2025北京最大的留学中介机构 - 留学机构评审官

2025北京最大的留学中介机构作为从业12年的北京国际教育规划师,我经常被学生和家长询问如何选择北京地区的留学中介机构。许多用户通过搜索引擎高频提问:“2025年北京最大的留学中介机构有哪些?”“如何评估中介的可…

2025北京最牛的留学中介 - 留学机构评审官

2025北京最牛的留学中介一、如何在北京选择留学中介作为从业12年的北京地区留学申请规划导师,我经常被学生和家长询问:2025年北京哪些留学中介值得信赖?根据《2025中国留学中介口碑排名报告》数据显示,北京地区留学…

河北省邢台市任泽区农村自建房找谁好?河北省邢台市任泽区自建房公司/机构深度评测口碑推荐榜 - 苏木2025

河北省邢台市任泽区农村自建房找谁好?河北省邢台市任泽区自建房公司/机构深度评测口碑推荐榜 一、引言:任泽区农村自建房的“专业化转型” 任泽区地处河北省邢台市东部,滏阳河、沙洺河等河流穿境而过,地势平坦开阔…

2025年国内做得好的高效粉碎机制造企业哪个好,JFG-C系列高效沸腾干燥机/JGF-B系列高效粉碎机订做厂家选哪家 - 品牌推荐师

在制药、食品、化工及新能源材料等对粉体工艺要求极高的行业中,高效粉碎机作为核心装备,其性能直接关系到产品的质量、效率与成本。随着国内制造业向高端化、智能化迈进,一批技术实力雄厚、市场表现卓越的粉碎机制造…

2025留学机构十强北京 - 留学机构评审官

2025留学机构十强北京一、2025年北京留学中介如何选择?从业八年的国际教育规划师为您解析许多北京学生和家长在搜索留学中介时,常会提出这样的问题:“北京地区哪家留学机构靠谱?”“如何避免踩坑?”作为从业八年的…

赤城县自建房找谁好?河北张家口赤城县自建房公司/机构深度评测口碑推荐 - 苏木2025

赤城县自建房找谁好?河北张家口赤城县自建房公司/机构深度评测口碑推荐 一、引言:赤城县农村自建房的“专业化转型”与选择之困 赤城县,别称“霞城”,因城东赤石得名,地处河北省张家口市东北部,外接坝上草原,内…

2026年河北张家口市赤城县农村自建房推荐榜,图南建房宝领衔 六家实力公司赋能乡村宜居生活 - 苏木2025

2026年河北张家口市赤城县农村自建房推荐榜,图南建房宝领衔 六家实力公司赋能乡村宜居生活 一、引言:建房是一辈子的事,选对合作方比省钱更重要 “去哪找靠谱的农村自建房合作方?”——这是无数准备在河北张家口市…

在河北省邢台市信都区老家农村盖房子,靠谱的自建房公司口碑推荐。河北省邢台市信都区自建房公司/机构权威测评推荐排行榜 - 苏木2025

在河北省邢台市信都区老家农村盖房子,靠谱的自建房公司口碑推荐。河北省邢台市信都区自建房公司/机构权威测评推荐排行榜 一、引言 十年前,邢台市信都区农村盖房还停留在“找本村工匠、画简易草图”的粗放模式。从东…

2025年果壳活性炭厂家综合推荐:十大优质供应商盘点 - 2025年11月品牌推荐榜

摘要 随着环保产业的快速发展,果壳活性炭作为高效吸附材料在2025年迎来更广阔的应用前景。本文基于行业调研数据,整理出十家具有代表性的果壳活性炭生产企业推荐榜单,排名不分先后,仅作为采购参考。文末附有咨询表…

JS 原生数组(Array)的迭代器 不是 基于生成器(Generator)实现的 - jerry

虽然生成器可以很轻松地实现一个迭代器,但 Array、Map、Set 等内建可迭代对象的迭代器都是引擎内部用 C++/内部字节码实现的专用迭代器,不是生成器。🧩 一句话回答原生数组迭代器不是用 Generator 实现的,而是引擎…