Ala*_*Ala 3 typescript angular
我有以下代码:
setInterval(this.CheckIfCameraIsAvailable(false).bind(this), 2 * 60 * 1000);
private CheckIfCameraIsAvailable(forceCheck: boolean) {
}
Run Code Online (Sandbox Code Playgroud)
我有以下错误:
类型'void'上不存在属性'bind'
当我从(CheckIfCameraIsAvailable)函数中删除(forceCheck:boolean)参数时,错误将被解决,但我想将参数传递给函数.
在您的示例中,您不小心调用了该函数,然后尝试使用.bind结果.正确的长手代码将是以下(您将false参数作为以下内容的一部分传递bind:
class Example {
CheckIfCameraIsAvailable(forceCheck: boolean) {
alert(forceCheck);
}
run() {
setInterval(this.CheckIfCameraIsAvailable.bind(this, false), 2000);
}
}
const example = new Example();
example.run();
Run Code Online (Sandbox Code Playgroud)
保留词法范围的简便方法是使用箭头函数:
class Example {
CheckIfCameraIsAvailable(forceCheck: boolean) {
alert(forceCheck);
}
run() {
setInterval(() => this.CheckIfCameraIsAvailable(false), 2000);
}
}
const example = new Example();
example.run();
Run Code Online (Sandbox Code Playgroud)
这相当于引入一个这样的中间变量:
class Example {
CheckIfCameraIsAvailable(forceCheck: boolean) {
alert(forceCheck);
}
run() {
const _this = this;
setInterval(function () { _this.CheckIfCameraIsAvailable(false) }, 2000);
}
}
const example = new Example();
example.run();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3263 次 |
| 最近记录: |