什么是 regenerator-runtime-only?
regenerator-runtime-only 是一个可以异步处理 generator 函数和 async 函数的 JavaScript 运行库,在 babel 转换 generator 代码时会用到这个库。通常情况下,Babel 会将 generator 函数和 async 函数转换为较为臃肿和多余的代码。
regenerator-runtime-only 此时便可以起到很好的帮助作用,它可以将 generator 函数和 async 函数转换为支持的运行环境中的原生 JavaScript 代码,使得代码更加精简、简洁、高效。
开始安装
您可以通过 npm 安装这个运行时库,使用命令:
npm install --save regenerator-runtime-only
当安装完成以后,您就可以在您的项目中引用这个包,方法如下:
import 'regenerator-runtime-only/runtime';
这里应当引入 runtime.js 文件,而不是 regenerator-runtime-only 包的本身。
注意:运行库不能被任何的代码引用,除非该代码本身已从 generator 和 async 函数语法中删除了使用它的表达式。
代码实例演示
接下来,我们利用代码示例,演示 regenerator-runtime-only 是如何转换 generator 函数和 async 函数。
首先,我们需要一个 generator 函数:
function* generatorExample() { yield 'value1'; yield 'value2'; yield 'value3'; }
这个 generator 函数将返回一个迭代器,它可以用来迭代这些值。但是,我们可以使用 async 函数对这些迭代值进行异步处理。
async function getDataFromGenerator() { const gen = generatorExample(); const data1 = await gen.next(); const data2 = await gen.next(); const data3 = await gen.next(); return [data1, data2, data3]; }
这个函数将等待每个 value 的到来,并且将这些值打包成一个数组返回。 在这里,使用 regenerator-runtime-only 库,可以让 async 函数以一种更加高效的方式进行处理。 我们可以将代码更改为:
-- -------------------- ---- ------- ----- -------- ---------------------- - ----- ---------------------------------- -- - ----- --- - ------------------- ----- ----- - ----- ----------- ----- ----- - ----- ----------- ----- ----- - ----- ----------- ------ ------- ------ ------- ----- -展开代码
这个代码,将使用更加高效的方式处理 generator 函数,以及异步函数。这里需要注意的是,在 async 函数的第一行,使用申明
await regeneratorRuntime.async(function* () {
这个申明会告诉 regenerator-runtime-only,该异步函数会使用到该库。
后续学习
Node.js 是一个非常强大的工具,但是如果您希望更加专业、科学、高效地使用它,则需要花费更多时间来学习相关知识。
如果您想深入了解 regenerator-runtime-only 的工作原理以及更多相关内容,您可以访问官方网站,那里提供了更加详细和全面的内容:
https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime-only
此外,您还可以参考各种在线教程和指南,以加快学习速度。 如果您想成为一名高效的前端工程师,就需要不断学习,不断探索,不断进化。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/71152