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))代码>