例如,有一个名为animationComplete(来自第三方库)的变量和一个名为HappAfterAnimation的函数:
一个简单的解决方案如下所示:
while(!animationComplete) { // Do nothing } happenAfterAnimation()
或者这样一个更复杂的解决方案:
function tryHappenAfterAnimation() { if(animationComplete) { happenAfterAnimation() } else { setTimeout(tryHappenAfterAnimation,100) } } setTimeout(tryHappenAfterAnimation,100)
由于未来/承诺在当前版本的Javascript中不可用,所以在这方面可能有点过分了
我只是想知道这种情况是否有优雅轻便的方式.
有没有人有更好的处理方法的想法?谢谢!
解决方法
@H_301_20@ 第一种方法根本不起作用.它将永远阻止线程.缺乏内在的承诺支持并不是一个不使用承诺的借口.如果你的图书馆给你一个事件/回调驱动的方式等待结果(如果没有,我会感到惊讶),那么你应该使用一个事件或承诺.
如果没有,并且轮询变量是真正的唯一选择,那么我会说你的第二种方法是很多唯一的选择.