Javascript 为什么Alert用作暂停?

Javascript 为什么Alert用作暂停?,javascript,Javascript,首先,如果这个问题以前被回答过,请道歉 我正在用JS编写一个代码来读取Excel文件,获取列中第一个单元格的值,搜索它(这是一个ISBN代码,我正在使用Google Books API进行搜索),并获取通过搜索获得的其他相关信息(如标题、副标题和作者),然后继续下一行并重复该过程 我的问题是将新数据写回Excel文件。代码正在写入文件中最后使用的行中的所有信息。在使用window.alert标记代码时,我注意到,当警报处于for循环时,就在搜索开始之前,新数据插入得很好,但如果我尝试使用暂停(如

首先,如果这个问题以前被回答过,请道歉

我正在用JS编写一个代码来读取Excel文件,获取列中第一个单元格的值,搜索它(这是一个ISBN代码,我正在使用Google Books API进行搜索),并获取通过搜索获得的其他相关信息(如标题、副标题和作者),然后继续下一行并重复该过程

我的问题是将新数据写回Excel文件。代码正在写入文件中最后使用的行中的所有信息。在使用window.alert标记代码时,我注意到,当警报处于for循环时,就在搜索开始之前,新数据插入得很好,但如果我尝试使用暂停(如计时器功能或While循环来消耗时间),则根本没有帮助

我想知道的是为什么会发生这种行为,如果可能的话,当然还有可能解决我的问题,因为必须使用警报作为暂停并不是最有趣的解决方案


提前感谢

警报将始终停止所有代码的执行,网络工作者除外。因此,如果需要继续执行,请使用web worker。查看以供参考(注释部分部分部分介绍了此主题)

当浏览器显示本机模式交互小部件(如警报)时,它会转换为等待响应的状态。在此状态下,允许重新绘制页面并处理某些低级事件。以下是来自Mozilla Firefox的代码,
alert()
confirm()
使用:

openRemotePrompt
功能在用户单击警报上的“确定”之前不会返回。但是,浏览器在警报打开时的行为不同。循环反复调用
thread.processNextEvent
来执行某些类型的工作,直到对话框关闭。(它不运行应用程序的JavaScript代码,因为它是单线程的。)


例如,当您使用纯JavaScript忙等待时,通过循环直到某个墙时间,浏览器不会采取这些措施来保持东西移动。最值得注意的是,当JavaScript代码循环时,UI不会重新绘制。

这是因为
alert()
就是这样工作的。它完全冻结了页面中代码的执行。(好吧,几乎完全)
alert()。它和一些其他函数,如
prompt()
在这方面是独一无二的。它们被称为阻塞函数,因为在它们完成之前,其他javascript无法运行<代码>设置超时()
未阻塞。其他javascript可以运行
setTimeout()
只需安排javascript在将来某个时候运行即可。它不会阻塞。如果您需要更好的帮助,请发布您的代码,以便我们可以帮助您适当地组织代码。我们确实无法帮助您查看您的代码。我将于明天这样做,因为我目前无法访问代码home@htcoelho我们不需要你的代码,发生的事情没有任何问题。这是应该发生的。如果您需要继续执行,请使用web Worker如果它是如何工作的,您最好显示一些参考资料或将其作为注释。我的注释的哪一部分是不礼貌的?如果不礼貌,请将其标记,以便版主判断!而且几乎每一个网站都是比你我更好的参考,我们不是在写论文,所以甚至维基百科也可以作为参考!这里的参考点是让OP学到一些东西,因为你的答案和评论一样没有价值。哪一部分更具体,我说了什么冒犯了你?感谢上帝,我有很多版主,所以为我的评论升起旗帜。我甚至没有投你反对票,我只是给你留下一条评论,让你的答案更好@AliAmiri我不是说你粗鲁,但更像是你在要求我欠你的东西。我把这个作为答案,因为我觉得它更完整。无论如何,我要感谢你们所有人向我解释发生了什么。它真的帮助我理解并想出了可能的解决办法