2016-08-08 4 views
1

새 창에 새 JavaScript 스레드를 강제로 적용 할 수있는 방법이 있는지 아는 사람 있습니까?window.open 강제로 새 JavaScript 스레드

저는 렌더링 단계가 사용자 상호 작용을 도살하고있는 ExtJs 응용 프로그램이 있습니다. 이제는 전체 Ext 응용 프로그램을 던질 수 없으므로 localStorage를 사용하여 브라우저 창 사이에서 전달되는 이벤트를 관리하고 응용 프로그램의 높은 활동 데이터 입력 부분을 새 응용 프로그램에서 생성 된 Angular2 응용 프로그램으로 바꾸는 방법을 고안했습니다. Ext 앱의 창

사물의 Angular2면에서 일이 훌륭하게 수행되는 동안 렌더링 단계 중에 Ext 응용 프로그램이있는 상위 창이 중단되면 Angular2 응용 프로그램이있는 창도 중단되어 키 스트로크가 누락됩니다 (불량).

Angular2 앱의 JavaScript 스레드를 Ext에서 이혼 할 수 있다는 것은 이상적입니다.

가능하면 누구에게 알리십니까?

+1

왜 작업자를 대신 스폰하는 것이 좋을까요? – adeneo

+0

어느 것을 위해? 노동자가 어떻게 일하는지에 빠져있는 것이없는 한, 노동자는 나에게 도움이되지 않습니까? ExtJS 앱이 렌더링 단계에있는 동안 두 개의 창을 잠그고있는 DOM과 상호 작용할 수있는 유일한 스레드 인 다른 주 창에서 발생한 데이터 항목 인 메인 JS 스레드를 잠급니다. – Sandwich

+0

브라우저를 사용하는 방법이 없을 것이라고 생각하지 마십시오. 당신이 _I_가 당신의 사이트를 브라우징하는 동안 이것을한다면, 나는 정말로 짜증이났다. 나는 Firefox를 사용하고 새로운 윈도우를 여는 것은 대단히 비싸다고 생각한다. (나의 addons는 도움이되지 않는다.) opening 새 창은 모든 브라우저 인스턴스가 한 번에 최대 10 초 동안 멈추는 경향이 있습니다. 왜냐하면 당신은'window.open'이 매달린 것을 재연시킬 것이라고 생각했기 때문입니다. – vlaz

답변

0

새 창을위한 새로운 자바 스크립트를 메인 스레드 할 수있는 방법이 없습니다.

0

자바 스크립트는 스레드 언어가 아닙니다. 그러나 UI를 차단하지 않고 함수를 실행하기 위해 사용할 수있는 몇 가지 대안이 있습니다. 가장 광범위한 해결책은 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

네, 맞습니다. 문제는 모든 브라우저에서 새 스레드를 _force_하는 방법을 아는 사람이 있습니까? – Sandwich