此示例中的函数doSomethingElse
由于this
由于{内无上下文调用而已反弹到window
或global
(如果在Node中),因此无法执行。 {1}}。
是否可以避免在每个函数中不引用app.populateDatabase
的情况?
app
函数根据逻辑语句执行回调,如果虚拟数据库不存在,则在加载后将其填充,然后loadDatabase
执行已提供的回调。
我无法将populateDatabase
参数重新绑定到onLoaded
,因为我不知道它的来源,并且过度绑定/应用/调用抽象会造成混乱。
app
答案 0 :(得分:3)
只需将Sys.getenv("R_LIBS_USER")
替换为this.loadDatabase(this.doSomethingElse);
。这样,您可以创建一个新的箭头函数,但随后会在正确的this.loadDatabase(() => this.doSomethingElse());
上下文中调用doSomethingElse
。
您也可以执行this
,但我建议使用箭头功能。这里是.bind
:bind
通常考虑转移到Promise和异步功能。然后执行以下操作:
this.loadDatabase(this.doSomethingElse.bind(this))
或具有异步功能的更好功能:
this.loadDatabase().then(() => this.doSomethingElse());