Ecmascript 6 您可以在生成器函数中绑定此值吗

Ecmascript 6 您可以在生成器函数中绑定此值吗,ecmascript-6,Ecmascript 6,考虑到需要在其主体中屈服时不能使用箭头函数,是否可以设置此值以在主体中使用 我已经为自己建立了一个数据库库,它扩展了“冗长”的库,允许我执行以下操作 const self = this; db.exec(function*(connection) { let sql = 'SELECT * FROM myTable WHERE id = @id'; let request = connection.request(sql); request.addParameter('id',db.

考虑到需要在其主体中屈服时不能使用箭头函数,是否可以设置
值以在主体中使用

我已经为自己建立了一个数据库库,它扩展了“冗长”的库,允许我执行以下操作

const self = this;
db.exec(function*(connection) {
  let sql = 'SELECT * FROM myTable WHERE id = @id';
  let request = connection.request(sql);
  request.addParameter('id',db.TYPE.Int, myIdValue);
  let count = yield connection.execSql(function*() {
    let row = yield;
    while(row) {
//process row with somthing like self.processRow(row);
      row=yield;
    }
  });
  if (count > 0) {
    request = connection.request('some more sql');
//etc
  }
  return something;
}).then(something => {
//do some more things if the database access was a success
}).catch(error => {
// deal with any errors.
}) ;
我发现我越来越需要从外部访问
这个
值,并且不断地在周围函数的前端将其分配给self

是否可以使用bind之类的设置
值?函数内部*(向下多个级别!)


由于我可以完全访问用于实现
db.exec
connection.execSql
的迭代器,如果可能的话,我可以更改它们。要支持它。

生成器像正常功能一样使用

您几乎没有解决方案:

  • 在生成器表达式上使用
  • 作为第一个/第二个参数传递给名为
    self的生成器
  • make
    db.exec
    获取第二个参数
    thisArg
    ,类似于
如果为forEach()提供了thisArg参数,则在调用时会将其传递给回调,以用作其this值。否则,将传递未定义的值作为其此值使用。回调最终可观察到的this值是根据确定函数所见this的常规规则确定的


我建议使用最后一种解决方案。

生成器使用
与正常功能一样

您几乎没有解决方案:

  • 在生成器表达式上使用
  • 作为第一个/第二个参数传递给名为
    self的生成器
  • make
    db.exec
    获取第二个参数
    thisArg
    ,类似于
如果为forEach()提供了thisArg参数,则在调用时会将其传递给回调,以用作其this值。否则,将传递未定义的值作为其此值使用。回调最终可观察到的this值是根据确定函数所见this的常规规则确定的


我建议使用最后一种解决方案。

您可以直接绑定所有生成器函数,即
db.exec(函数*(){connection.execSql(函数*(){}.bind(this));}.bind(this))您可以一直绑定所有生成器函数,即
db.exec(函数*(){connection.execSql(函数*(){}.bind(this));}.bind(this))