在response.write()中缓慢的函数调用阻塞事件循环?

所以,在阅读了一些关于非阻塞代码后,确实…

response.write(thisWillTakeALongTime()); 

阻止这个过程? 如果是这样,我们是否需要将响应传递给我们所做的每一个缓慢的函数调用,并让该函数处理响应?

感谢您的帮助澄清!

是的,它会阻止事件循环。 而将响应对象传递给慢速函数将无济于事,无论你在哪里调用慢速函数,都会阻塞事件循环。

至于如何解决这个问题,我们需要更多的信息。

什么让你的慢function慢? 你正在执行大型计算? 你在做文件/数据库调用的同步版本吗?

这取决于你的意思是过程。 Web服务器已经完成服务的页面在这一点上你会执行,但请求是同步的,所以JavaScript将继续把它的function,直到它返回无论即使需要几年。 (希望通过这一点浏览器会检测到你的脚本耗时过长,并给你机会杀死它)。 即使你仍然遭受用户不得不杀死你的JavaScriptfunction,他们不能使用该页面的尴尬。

那么你如何解决这个问题。 当这个问题变得特别重要的时候,当你的问题出现的时候,因为在这个问题上,一大堆东西可能会出错。 想象一下,你的用户是在地球的另一边。 networking延迟可能会让你的js很慢。 当使用ajax时,最好使用解决这个问题的asynchronous请求。 我个人build议使用jquery,因为它使asynchronousajax调用非常简单,而侧面的文档非常简单。 我build议的另一件事是使返回输出小。 最好是返回json输出,并从中build立所需的html。