上次,我们思考了在调用堆栈中进行函数调用时需要花费大量时间进行处理的问题

想象一下,例如,一个在浏览器中运行的复杂图像变换算法。

虽然调用堆栈具有执行功能,但浏览器无法执行任何其他操作 - 它被阻止。这意味着浏览器无法渲染,它无法运行任何其他代码,它只是卡住了。这就是问题所在 - 您的应用UI不再高效而且令人愉悦。

您的应用程序被卡住

在某些情况下,这可能不是一个至关重要的问题。但是嘿 - 这是一个更大的问题。一旦您的浏览器开始在调用堆栈中处理太多任务,它可能会在很长一段时间内停止响应。此时,许多浏览器会通过引发错误来采取行动,询问是否应该终止页面:

这很丑陋,完全破坏了你的用户体验:

为什么单线程是一个限制?_多任务