我正在尝试将一些ES6生成器包装在mssql库的节点周围。 mssql库支持流式传输,但它通过发出事件来实现。这类似于Node附带的非阻塞服务。
我遇到的问题是如何在事件处理程序的上下文中继续生成器。例如:
class myClass {
// ...
*myGenerator(querystring) {
mssql.connect(this.config)
.then(() => {
let request = new mysql.Request();
request.stream = true;
request.query(querystring);
request.on('row', row => {
yield row; // DOH!
});
request.on('error', err => {
throw err;
});
request.on('done', affected => {
return affected; // DOH!
});
});
}
}
甚至可以将基于事件的非阻塞流API转换为迭代器生成器吗?或者这仅仅是ES6中当前规范的背景?