Javascript 在延迟/承诺实现中使用计时器是一种罪恶吗?

Javascript 在延迟/承诺实现中使用计时器是一种罪恶吗?,javascript,asynchronous,timer,promise,deferred,Javascript,Asynchronous,Timer,Promise,Deferred,我的许多朋友在他们的库中深入使用了一些延迟/承诺对象,他们经常告诉我,在自己的实现中使用计时器是一种罪恶 它与A+不对应: 许多库,如jQuery和其他库,都不使用计时器。因此,我试图在jQuery源代码中找到任何可能与承诺实现有关的计时器,但没有成功: 好吧,但我在A+描述中发现了一些注释,它们让我对在其中使用计时器感到困惑: 在注释中文章: 这里的“平台代码”是指引擎、环境和承诺 实现代码。在实践中,这一要求确保 onCompleted和onRejected在事件发生后异步执行 循环,然后

我的许多朋友在他们的库中深入使用了一些延迟/承诺对象,他们经常告诉我,在自己的实现中使用计时器是一种罪恶

它与A+不对应:

许多库,如jQuery和其他库,都不使用计时器。因此,我试图在jQuery源代码中找到任何可能与承诺实现有关的计时器,但没有成功:

好吧,但我在A+描述中发现了一些注释,它们让我对在其中使用计时器感到困惑:

注释中
文章:

这里的“平台代码”是指引擎、环境和承诺 实现代码。在实践中,这一要求确保 onCompleted和onRejected在事件发生后异步执行 循环,然后在其中调用,并使用新堆栈。这可能是 使用“宏任务”机制(如setTimeout)或 setImmediate,或使用“微任务”机制,如 MutationObserver或process.nextTick。自承诺实施以来 被认为是平台代码,它本身可能包含一个任务调度 调用处理程序的队列或“蹦床”

所以,我知道A+对计时器的使用没有严格的规定,或者是真的吗


帮帮我,我很困惑。

通常在应用程序中使用计时器是一种不好的做法(也就是说,调度任务除外)

你永远无法确定一项行动需要多长时间。因此,你最终会做以下三件事之一:

  • 你要么分配的时间不够,在这种情况下,事情就会破裂,因为一些你期望发生的事情还没有发生
  • 或者您分配了太多的时间,在这种情况下,您的应用程序会毫无理由地慢下来
  • 或者,在最坏的情况下,您只分配了足够的时间,这会导致应用程序有时中断,有时按预期工作

我不确定规格和其他东西。但是在应用程序中使用计时器和延迟通常是一个坏主意。

您将
setTimeout
的使用与“设置计时器”混淆了,-/a+实现通常使用
setTimeout
来保证处理程序函数的异步执行,而不是将执行延迟一段时间

承诺/A+保证异步调用已实现和已拒绝的方法,而不管承诺何时实现。在浏览器JS环境中保证异步执行的一种方法是将函数调用包装在
setTimeout
中,超时为零(默认值)

jQuery不保证AYYC执行已完成/拒绝的回调(即),因此不需要异步包装调用。< / P>他们在承诺实现中使用定时器,认为它们是邪恶的?