2016-08-08 13 views
1

新しいウィンドウに新しいJavaScriptスレッドを強制する方法があるのか​​知っていますか?window.open強制的に新しいJavaScriptスレッド

私はExtJsアプリケーションを持っています。そのレンダリングステップはユーザーのやりとりを撲滅しています。私はExtアプリケーション全体を投げることはできませんので、ブラウザウィンドウ間でイベントを渡して管理するためにlocalStorageを使用する方法を考案し、アプリケーションの高度なアクティビティデータ入力部分を新しいアプリケーションで生成されたAngular2アプリケーションExtアプリからのウィンドウ。

物事のAngular2側で物事がうまくいっている間に、レンダリングステップ中にExtアプリケーションを持つ親ウィンドウがハングすると、Angular2アプリケーションのウィンドウもハングアップし、ユーザーはキーストローク(これは悪い)を失います。

Angular2アプリのJavaScriptスレッドをExtから離すことが理想的です。私がやりたいことです。

これが可能なら誰でも知っていますか?

+1

代わりに、代わりにワーカーをスポーンするのはなぜですか? – adeneo

+0

これはどれですか?労働者の働き方に欠けているものがなければ、労働者は私をうまくやってくれませんか? ExtJSアプリケーションはレンダリングステップ中に、メインのJSスレッドをロックします。これは、両方のウィンドウをロックするDOMと対話できる唯一のスレッドです(別のウィンドウで発生するデータエントリとも呼ばれます)。 – Sandwich

+0

これを行うにはブラウザ間のやり取りがあるとは思わないでください。あなたが_I_があなたのサイトをブラウズしている間にこれをやろうとしたら、Firefoxを使用して、新しいウィンドウを開くのはひどく高価なようです(私のアドオンは役に立たないようです)。新しいウィンドウでは、すべてのブラウザインスタンスが一度に最大10秒間ハングする傾向があります。なぜなら、あなたは 'window.open'がハンギングを減らすと思ったからです。 – vlaz

答えて

0

新しいウィンドウのための新しいJavaScriptのメインスレッドに方法はありません。

0

Javascriptはスレッド言語ではありません。しかし、をブロックしないで関数を実行するために使用するいくつかの選択肢があります。最も広範なソリューションはWindowTimer functionsを使用することです。ここではその上にさらに

読む:How can I create an Asynchronous function in Javascript?

+0

JavaScriptは明示的に(ワーカーを除いて)スレッド言語ではありませんが、[あなたのブラウザは別のJSスレッドを維持します](http://stackoverflow.com/a/17169863/3508083)。あなたが知っているブラウザでこれを強制してください、私はあなたの答えを受け入れます。 – Sandwich

0

実際には はまた、あなたはどのようなパラメータを使用して、ブラウザを開いた方法によって異なります....彼らはそれに取り組むためにしたいどのようにブラウザに依存します。 親と子が結合されている場合は問題になる可能性があります。一方、親と子が独立していれば、助けを借りるかもしれません。

チェックこの回答 https://stackoverflow.com/a/17169863/2219162

+0

はい、これは正しいです。問題は誰でも、どのブラウザでも新しいスレッドを強制する方法を知っていますか? – Sandwich

関連する問題