从概念上讲,我有一个requestAnimationFrame回调,如下所示:
render(now) {
a = A(now); // long running computation
b = B(now); // another long running computation
[update DOM using a, b]
requestAnimationFrame(render) // re-trigger animation
}
我想在Web worker中运行A()来提高帧速率。 由于时间上的小不一致是可以接受的,我想 转换为运行所有计算的类似的东西 Web工作者中的A()。
render(now) {
a = [wait for/retrieve previous result for A(now') from web worker]
[start new computation of A(now) in web worker]
b = B(now);
[update DOM using a, b]
requestAnimationFrame(render)
}
我的主要问题是“等待/检索以前的结果”部分。 在这里使用“等待”或类似因素会导致问题,因为控制可以 在DOM更新发生之前返回浏览器。
我对Dart或JavaScript中的解决方案感兴趣。