bal*_*ton 9 javascript yield generator node.js
我试图在JavaScript和Node.js中了解生成器和产量,但是遇到了问题.
理想情况下,我想要做的是用生成器/ yield包装fs.readFile,这样我就可以同步使用它而不会阻塞任何东西.
我想出了以下代码:
function readFileSync (path) {
return (function *(){
return yield require('fs').readFile(path, function *(err, data){
yield data;
});
})();
}
console.log(readFileSync('test-file.txt'));
Run Code Online (Sandbox Code Playgroud)
但是,不幸的是,readFileSync只是总是返回{}而不是文件内容.
希望我想要实现的目标仍然是可能的,或者我可能完全错过了生成器/产量的点,我完全错误地使用它,在这种情况下指出我出错的地方,任何资源都会很棒.
lge*_*man 10
如何使用带有和声功能的节点启用(node --harmony)和这个超级简单的ES6片段:
function run( gen, iter) {
(iter=gen( (err, data) => (err && iter.raise(err)) || iter.next(data))).next();
}
run(function* (resume) {
var contents = yield require('fs').readFile(path, resume);
console.log(contents);
});
Run Code Online (Sandbox Code Playgroud)
您可以在本文的orangevolt.blogspot.com上阅读有关此死亡简单模式的更多信息(并在线试用)
ale*_*lex -3
使用生成器将异步函数转变为同步函数是不可能的。
生成器可以中断自己,但不能中断其他函数的控制流。
因此,您的代码可以工作的唯一方法是它位于另一个生成器中:
console.log(yield* readFileSync('test-file.txt'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4055 次 |
| 最近记录: |