我正在努力理解JavaScript和Node.js中的生成器和yield,但遇到了问题。
理想情况下,我希望能够使用生成器/ 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'));
但是,不幸的是,readFileSync
总是返回{}
而不是文件内容。
希望我想要实现的仍然是可能的,或者我完全误解了生成器/ yield 的重点,并且我完全使用不正确,在这种情况下,指出我错在哪里以及任何资源都将是很好的。
fs.readFileSync
? - Bergi