首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS setImmediate与私有类方法

NodeJS setImmediate与私有类方法
EN

Stack Overflow用户
提问于 2022-05-01 07:29:01
回答 1查看 32关注 0票数 0

所以,第一次用setImmediate做实验。它似乎不能运行私有类方法。是真地吗?如果是,谁能给我解释一下原因吗?

不管用

专用类方法作为setImmediate的参数。抛出Callback must be a function. Received undefined

代码语言:javascript
复制
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的参数

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-01 07:31:35

如果您传递this.looper,则在调用函数时,looper将不再具有对this的正确引用,因此在第二次迭代中中断。

使用以下方法之一解决此问题:

代码语言:javascript
复制
setImmediate(this.looper.bind(this));
setImmediate(() => this.looper());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72074802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档