首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在生产中使用setTimeout()与discord.js吗?

我应该在生产中使用setTimeout()与discord.js吗?
EN

Stack Overflow用户
提问于 2022-02-28 19:00:00
回答 1查看 296关注 0票数 0

我正在处理一个机器人,我想设置一个按钮的状态从启用到禁用。

在这里,我感到困惑,好像我应该使用setTimeout()在20秒后禁用按钮,或者保持原样。当用户每次使用“!user”命令时,都会调用setTimeout()。

代码语言:javascript
复制
setTimeout(() => {
    row.components[0].setDisabled(true);
    row.components[1].setDisabled(true);
    row.components[2].setDisabled(true);
    sentMessage.edit({
        content: 'You cannot interact with buttons now!',
        components: [row],
    });
}, 20000);

在我搜索了谷歌之后,我发现setTimeout()以异步方式工作,这意味着如果我使用process1作为主要的不和谐的机器人回复,process2、process3和process4是setTimeout(),那么node.js将不会并行执行所有这些操作,相反,如果process2正在获取或发送数据,则node.js将执行process1,反之亦然。

Q0)是我发现的不正确的东西还是信息丢失了?

Q1)所以在这个场景中推荐使用setTimeout()吗?

Q2) setTimeout()会不会随着时间的推移而复合?

Q3是否会出现setTimeout()的性能问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-28 19:17:44

我想你找到了一些好消息,但你可能不完全明白。

从setTimeout()到MDN的异步性质

setTimeout()是一个异步函数,意味着计时器函数不会暂停函数堆栈中其他函数的执行。换句话说,您不能使用setTimeout()在函数堆栈触发下一个函数之前创建一个“暂停”。

因此,您的setTimeout()不应该阻止其他函数。

回答其他问题:

我认为在这里使用setTimeout()是正确的。

setTimeout不应该随着时间的推移而复合--每个setTimeout都得到一个唯一的timeoutID,它作为setTimeout()函数的正整数值返回。

不应该有表演的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71299810

复制
相关文章

相似问题

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