详谈ES6中的迭代器(Iterator)和生成器(Generator)(9)

现在,这个新版的任务执行器已经可以用于所有的异步任务了。在Node.js环境中,如果要从文件中读取一些数据,需要在fs.readFile()外围创建一个包装器(wrapper),并返回一个与fetchData()类似的函数

let fs = require("fs"); function readFile(filename) { return function(callback) { fs.readFile(filename, callback); }; }

readFile()接受一个文件名作为参数,返回一个可以执行回调函数的函数。回调函数被直接传入fs.readFile()方法,读取完成后会执行它

run(function*() { let contents = yield readFile("config.json"); doSomethingWith(contents); console.log("Done"); });

在这段代码中没有任何回调变量,异步的readFile()操作却正常执行,除了yield关键字外,其他代码与同步代码完全一样,只不过函数执行的是异步操作。所以遵循相同的接口,可以编写一些读起来像是同步代码的异步逻辑

当然,这些示例中使用的模式也有缺点,也就是不能百分百确认函数中返回的其他函数一定是异步的。着眼当下,最重要的是能理解任务执行过程背后的理论知识

以上这篇详谈ES6中的迭代器(Iterator)和生成器(Generator)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyjydf.html