例如,有一个名为 animationComplete
的变量(来自第三方库)和一个名为 happenAfterAnimation
的函数:
一个简单的解决方案如下所示:
while(!animationComplete) {
// Do nothing
}
happenAfterAnimation()
或者像这样更复杂的解决方案:
function tryHappenAfterAnimation() {
if(animationComplete) {
happenAfterAnimation()
} else {
setTimeout(tryHappenAfterAnimation, 100)
}
}
setTimeout(tryHappenAfterAnimation, 100)
第一个解决方案可能有一些开销,而第二个解决方案看起来有点脏。
由于 future/promise
在当前版本的 Javascript 中不可用,所以这里可能有点矫枉过正..
我只是想知道这种情况是否有一种优雅而轻量级的方法..
有没有人知道更好的方法来处理这个问题?谢谢!
最佳答案
第一种方法根本行不通。它将永远阻塞线程。
没有内置的 Promise 支持并不是不使用 Promise 的真正借口。如果您的库为您提供了一种事件/回调驱动的方式来等待结果(如果没有,我会感到惊讶),那么您应该使用事件或 promise 。
如果不是,并且轮询变量确实是您唯一的选择,那么我会说您的第二种方法几乎是唯一的选择。
关于javascript - 在Javascript中轮询本地值的首选方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30451341/