我有以下代码:
setInterval(this.CheckIfCameraIsAvailable(false).bind(this), 2 * 60 * 1000);
private CheckIfCameraIsAvailable(forceCheck: boolean) {
}
我有以下错误:
'void'
类型中不存在属性'bind'
当我从(CheckIfCameraIsAvailable)函数中删除(forceCheck:boolean)参数时,错误将被解决,但我想将参数传递给函数。
答案 0 :(得分:8)
在您的示例中,您不小心调用了该函数,然后尝试在结果上使用.bind
。正确的长手代码如下(您将false
参数作为bind
的一部分传递:
class Example {
CheckIfCameraIsAvailable(forceCheck: boolean) {
alert(forceCheck);
}
run() {
setInterval(this.CheckIfCameraIsAvailable.bind(this, false), 2000);
}
}
const example = new Example();
example.run();
保留词法范围的简便方法是使用箭头函数:
class Example {
CheckIfCameraIsAvailable(forceCheck: boolean) {
alert(forceCheck);
}
run() {
setInterval(() => this.CheckIfCameraIsAvailable(false), 2000);
}
}
const example = new Example();
example.run();
这相当于引入了这样一个中间变量:
class Example {
CheckIfCameraIsAvailable(forceCheck: boolean) {
alert(forceCheck);
}
run() {
const _this = this;
setInterval(function () { _this.CheckIfCameraIsAvailable(false) }, 2000);
}
}
const example = new Example();
example.run();