javascript - 为什么 Javascript Async 在 Chrome 扩展程序中不能并行工作
问题描述
我正在开发 chrome 扩展。不知何故,当我在异步函数中使用 while 循环时,扩展程序会阻止网站加载。
为简单起见,我访问了网站,打开了 Chrome Dev Inspector 并在控制台中运行了这段代码:
async function testFunction(){
while(1) {}
}
testFunction()
这是异步内部的无限循环。异步应该并行工作,因此它不应该对网站的加载造成任何问题,但确实如此。该网站停止加载任何进一步。我是怎么确认的?我根本无法移动滚动条,它停止工作。
编辑: 因为我现在知道异步不像多线程那样真正并行,所以我想添加我面临的真正问题并想问如何解决它:
在“FOR 循环”中,我需要注入 iframe,然后需要等待它加载。之后,对 iframe 做一些处理,循环结束。对于下一次迭代,iframe SRC 被另一个 SRC 替换,并且重复之前的过程。问题是我必须等待 iframe 加载完成,而 while 循环无法完成(它本身会停止 iframe 的加载,这会破坏整点)。你有什么建议?
解决方案
推荐阅读
- c++ - 当后续进程仅通过参数时,第一个进程保持运行的最佳 IPC 方法是什么?
- unreal-engine4 - UE UMG,当我addchild use C++时,slot丢失了我在blueprint中设计的Slot属性,如何保留?
- swift - 按下活动标签栏时如何加载 WKWebview 转到根页面?
- jekyll - 向 GitHub 企业实例添加远程主题?
- java - 执行 .sql 脚本文件的 ProcessBuilder 挂起
- spring - Spring Boot - 如何在没有会话存储的情况下永久保留 JSESSIONID
- ng-bootstrap - 如何计算数据之间的差异或比较(是否更大)(Jalali 日历)
- python-3.x - 如何在 ubuntu 上使用 cmake 在 python 虚拟环境(conda)中构建和安装 flann 和其他库
- datagridview - 如果 C# datagridview 行求和
- .net - vb.net, Xtrareport :如何在 Xrtable 扩展的每个页面上显示 Xrtable 的标题?