我正在处理一个机器人,我想设置一个按钮的状态从启用到禁用。
在这里,我感到困惑,好像我应该使用setTimeout()在20秒后禁用按钮,或者保持原样。当用户每次使用“!user”命令时,都会调用setTimeout()。
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()的性能问题?
发布于 2022-02-28 19:17:44
我想你找到了一些好消息,但你可能不完全明白。
从setTimeout()到MDN的异步性质
setTimeout()是一个异步函数,意味着计时器函数不会暂停函数堆栈中其他函数的执行。换句话说,您不能使用setTimeout()在函数堆栈触发下一个函数之前创建一个“暂停”。
因此,您的setTimeout()不应该阻止其他函数。
回答其他问题:
我认为在这里使用setTimeout()是正确的。
setTimeout不应该随着时间的推移而复合--每个setTimeout都得到一个唯一的timeoutID,它作为setTimeout()函数的正整数值返回。
不应该有表演的问题。
https://stackoverflow.com/questions/71299810
复制相似问题