1
的一致呼叫我有一个函数:测试相同功能
var inRendering = false;
function render() {
if (inRendering) {
requestAnimationFrame(render);
} else {
inRendering = true;
requestAnimationFrame(function() {
longAction();
inRendering = false;
});
}
}
我有单元测试它。测试并发呼叫render
的情况。
请帮帮我吗?这种并发呼叫在JavaScript中是否可行?谢谢。
P.S.我写这显然是行不通的(见注释)测试:https://gist.github.com/kuraga/b0aa3d66fc0620f03b11
你需要编写一个异步测试。 – SLaks
你的意思是@SLaks,究竟是什么意思?我的测试尝试是异步的(但没有WebWorkers) – Kuraga
你并不是真的想要测试同一个函数的并发调用。 JS是单线程的,因此您可以对同一个函数进行递归调用,但除了递归调用之外,函数的第一个调用将在另一个调用开始之前完成。你想测试是否在第一次调用渲染的内部函数被调用之前再次调用外部函数(render)。为了测试这个,你可以模拟requestAnimationFrame,以便在测试过程中控制这个。 – neonstalwart