所以,第一次用setImmediate做实验。它似乎不能运行私有类方法。是真地吗?如果是,谁能给我解释一下原因吗?
不管用
专用类方法作为
setImmediate的参数。抛出Callback must be a function. Received undefined
class TestPrivate {
public start(): void {
setImmediate(this.looper);
}
async looper(): Promise<void> {
console.log(`${new Date().toLocaleString()}`);
await sleep(500);
setImmediate(this.looper);
}
}
const testPrivate: TestPrivate = new TestPrivate();
testPrivate.start();这确实有效。
静态类方法作为
setImmediate的参数
class TestStatic {
public start(): void {
setImmediate(TestStatic.looper);
}
static async looper(): Promise<void> {
console.log(`${new Date().toLocaleString()}`);
await sleep(500);
setImmediate(TestStatic.looper);
}
}
const testStatic: TestStatic = new TestStatic();
testStatic.start();发布于 2022-05-01 07:31:35
如果您传递this.looper,则在调用函数时,looper将不再具有对this的正确引用,因此在第二次迭代中中断。
使用以下方法之一解决此问题:
setImmediate(this.looper.bind(this));
setImmediate(() => this.looper());https://stackoverflow.com/questions/72074802
复制相似问题