gpt4 book ai didi

javascript - 在类内部的 Node JS 中使用生成器

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:52 25 4
gpt4 key购买 nike

好的,我需要一些有关 Node 中生成器的帮助。

我真的很想写这样的代码:

require('./Class.js');
fs = require('fs');

var Directory = Class.extend({

construct: function(path){
this.path = path;
},

list: function*() {
var files = [];

yield fs.readdir(this.path, function(error, directoryFiles) {
files = directoryFiles;
});

return files;
},

});

var directory = new Directory('C:\\');
var list = directory.list();
console.log(list); // An array of files

注意事项:

这样的事情可能吗?

最佳答案

您可以使用类似 Wait.for-ES6 的辅助库(我是作者)

使用 wait.for 你的“列表”函数将是一个标准异步函数:

 ...
list: function(callback) {
fs.readdir(this.path, callback);
},
...

但是如果你在一个生成器中你可以顺序调用它:

function* sequentialTask(){
var directory = new Directory('C:\\');
var list = yield wait.forMethod(directory,'list');
console.log(list); // An array of files
}

wait.launchFiber(sequentialTask);

优点:您可以按顺序调用任何标准异步 node.js 函数

缺点:您只能在生成器 function*

中执行此操作

另一个示例:您甚至可以在没有“list”函数的情况下执行此操作,因为 fs.readdir 是一个标准异步 node.js 函数

var wait=require('wait.for-es6'), fs=require('fs');

function* sequentialTask(){
var list = yield wait.for(fs.readdir,'C:\\');
console.log(list); // An array of files
}

wait.launchFiber(sequentialTask);

关于javascript - 在类内部的 Node JS 中使用生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22463117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com