ES6生成器具有非阻塞事件

时间:2016-12-13 03:53:09

标签: node.js events iterator ecmascript-6 generator

我正在尝试将一些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中当前规范的背景?

0 个答案:

没有答案