HTML 웹 워커와 Jquery Ajax 호출
web worker 파일 내에서 jQuery를 사용할 수 있는지 궁금합니다.Google Chrome에서 "Uncatched ReferenceError: $ is not defined"라는 오류가 나타납니다.
코드는 다음과 같습니다.부모 파일:
var loader = new Worker(BASE_URL + "js/rss_loader_worker.js");
// Ask the worker to start loading the RSS from the server
loader.postMessage("loadRss");
// When receive the response from the server
loader.onmessage = function (event) {
console.log(event.data);
}
작업자 파일:
onmessage = function (event) {
if (event.data === "loadRss") {
loadRss();
}
}
/**
* This function handles the AJAX request to the server side
* then pass the content to the view page
* @param none
* @return html text
*/
loadRss = function () {
$.ajax({
data: {city: CITY_LOCATION},
url: BASE_URL + "/getfeeds",
onsucess: function (data) {
}
});
}
도와주세요.감사합니다. :)
아니, 넌 할 수 없어.스레드 이외의 세이프 컴포넌트나 DOM에는 액세스 할 수 없습니다.시리얼라이즈된 오브젝트를 통해 스레드 안팎으로 특정 데이터를 전달해야 합니다.그러니까 코드에 문제를 일으키려면 정말 열심히 해야 해.jQuery는 JavaScript DOM 라이브러리입니다.
하지만 네이티브를 사용할 수 있습니다.XMLHttpRequest
단, 종업원에게는요.
또한 외부 스크립트를 Import할 때는 다음 명령어가 포함된 페이지를 통과하지 않습니다.script
tag : 워커 파일에 importScripts()를 사용합니다.
제가 찾은 건 다음과 같습니다.
외부 스크립트 파일 또는 라이브러리를 worker에 로드할 수 있습니다.
importScripts()
기능.
http://www.html5rocks.com/en/tutorials/workers/basics/ #toc-environment-loading 스크립트
importScripts('script1.js');
importScripts('script2.js');
또는
importScripts('script1.js', 'script2.js');
그러나 jQuery에는 웹 작업자가 가지고 있지 않은 DOM 액세스 권한이 필요하므로 jQuery를 로드할 수 없습니다.
웹 워커는 외부 파일에 있으므로 다음 JavaScript 개체에 액세스할 수 없습니다.
- window 객체
- 문서 오브젝트
- 부모 오브젝트
따라서 $inside worker file을 사용할 수 없습니다.기존 AJAX를 사용하는 것이 좋습니다.
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
http://www.w3schools.com/html/html5_webworkers.asp에 있는 레퍼런스
jQuery는 대부분 DOM 작업 및 웹 페이지 작업용입니다.따라서 DOM에 액세스할 수 없는 웹 워커에게는 적합하지 않습니다.
언더스코어.js 등의 DOM 라이브러리가 아닌 유틸리티 라이브러리를 사용할 수도 있습니다.또는 유틸리티 기능을 유지한 채 jQuery의 라이트다운 버전인jQuery 라이브러리를 만들어야 합니다.
노드의 실행 환경입니다.또한 JS는 네이티브 DOM 구현이 없습니다.나는 그 노드를 말하는 것이 옳다고 생각한다.JS 및 HTML5 웹 워커는 몇 가지 제한을 공유합니다.
노드에서 jQuery를 사용하기 위해 DOM 구현을 시뮬레이션하는 방법이 있습니다.JS. 웹 워커에서 jQuery를 계속 사용하려면 노드를 검색해야 합니다.JS 솔루션 및 적용 여부를 확인합니다.
이 플러그인의 https://github.com/rwldrn/jquery-hive 를 참조해 주세요.
언급URL : https://stackoverflow.com/questions/4838883/html-web-worker-and-jquery-ajax-call
'source' 카테고리의 다른 글
약속에서 돌아오다() (0) | 2023.02.14 |
---|---|
관리화면 서브메뉴 항목에 커스텀 HTML 클래스 이름을 추가하는 방법 (0) | 2023.02.14 |
스프링 부트 어플리케이션이 'Hikari-Pool-1 - Starting...'에서 정지된다.." (0) | 2023.02.14 |
OPENJSON이 SQL Server에서 작동하지 않습니까? (0) | 2023.02.14 |
Wordpress : 구글 임베디드 맵 iframe에서 확대/축소 수준을 설정해야 합니다. (0) | 2023.02.14 |