我在浏览器中使用JavaScript打开窗口,以便让多个进程处理我拥有的大型数据集。
我遇到的问题是,子窗口似乎仍然与父级绑定,因此它们并不是真正独立的线程。我认为情况就是这样,因为我看到我在父标签中点击的按钮被卡住了#39;在按下的位置,只有一个子选项卡似乎将任何数据保存回我的数据库。
我想知道是否有办法解除子进程与父进程的关联/删除,因此子选项卡是真正独立的进程。
在循环中,我为每个我想要的进程打开一个窗口......
childWindow[p] = window.open('rangerCocoon.php','Launched Game '+p);
然后我等待片刻,以便使用超时加载子页面。我意识到这有点像hacky,但这个软件仅供我个人使用,所以没关系。 (我的另一个选择是让孩子告诉父母他已完成装载)。
然后我将一些数据设置为并在子页面中提交表单......
childWindow[p].document.getElementById('data').value = dataPacket;
childWindow[p].document.getElementById('launchForm').submit();
然后我在这里想要让孩子从父母那里解脱出来......
childWindow[p] = '';
最后一行虽然看起来没有打破它,因为我仍然看到我遇到的问题。
注意:我必须将引用childWindow[p]
添加到子窗口,因为我需要在子窗口中设置表单中的数据,然后提交该表单。即,我不能在不window.open
childWindow[p] = window.open
来电
感谢您的任何建议。
答案 0 :(得分:0)
JavaScript在其正常操作中不是多线程的,因此当您打开一个新窗口时,您实际上并没有打开一个新线程,因为它是在您用来创建它们的同一个线程的上下文中创建的。有关如何在网页上模拟多个线程的一些技巧,请参阅http://www.sitepoint.com/multi-threading-javascript/。
如果您在流程中使用HTML5,则可以尝试使用100%多线程的Web Workers。有关工人及其利弊的简单解释,请参阅http://www.htmlgoodies.com/html5/tutorials/introducing-html-5-web-workers-bringing-multi-threading-to-javascript.html#fbid=x3NE_fx2KzW。