首页 > 解决方案 > 使用 setInterval() 在 NodeJS 上创建多个 Timeout 对象

问题描述

setInterval使用 node.js,多次调用的可扩展性如何?我想创建一个作业系统,其中需要以不同的时间间隔执行定期作业,我当前的解决方案是为每个新作业创建一个超时(通过调用)。setInterval

目前,我将回调函数设置为异步调用。

我正在尝试了解最佳可扩展性和高性能实践,以在 node.js 应用程序中维护越来越多的 Timeouts 对象,以避免将来出现内存和性能问题。

标签: javascriptnode.jstimerscalability

解决方案


呃,详细说明很难,因为我不知道确切,应该做。

好的,让我试一试(也许我很幸运)。一般来说,你可以想到类似的东西:

function Job {
    function taskA() {
        return new Promise(resolve => {
            setTimeout(function() {
                resolve('result A');
            }, 1000);
        });
    }
    function taskB(arg) {
        return new Promise(resolve => {
            setTimeout(function() {
                resolve('result B of ' + arg);
            }, 1000);
        });
    }
    // would allow this chain:
    this.work = () => {
        taskA()
            .then(resA => taskB(resA))
            .then(resB => console.log(resB));
    }
}

推荐阅读