source

HTML 웹 워커와 Jquery Ajax 호출

manycodes 2023. 2. 14. 21:32
반응형

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할 때는 다음 명령어가 포함된 페이지를 통과하지 않습니다.scripttag : 워커 파일에 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

반응형