>웹 프론트엔드 >JS 튜토리얼 >UI를 차단하지 않고 비동기 JavaScript 함수를 효과적으로 호출하려면 어떻게 해야 합니까?

UI를 차단하지 않고 비동기 JavaScript 함수를 효과적으로 호출하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-16 11:39:03409검색

How Can I Effectively Call Asynchronous JavaScript Functions Without Blocking the UI?

비동기 JavaScript 함수를 동기식으로 호출

UI를 정지하지 않고 비동기식 호출을 동기식으로 만들려는 요구 사항은 독특하고 어려운 문제를 제시합니다. 안타깝게도 UI를 중단하지 않고 JavaScript 실행을 차단하는 것은 불가능합니다.

잠재적인 해결책 중 하나는 데이터 교환을 위해 전역 변수를 사용하는 것입니다. 비동기 호출의 콜백은 원하는 데이터가 포함된 전역 변수를 수정할 수 있습니다. 한편 폴링 메커니즘은 데이터를 사용할 수 있을 때까지 정기적으로 전역 변수를 확인합니다.

function doSomething() {
  window.data = null;  // Clear global data
  myAsynchronousCall(param1, callBack);
  var intvl = setInterval(function() {
    if (window.data) {
      clearInterval(intvl);
      console.log(window.data);
    }
  }, 100);
}

function callBack(d) {
  window.data = d;
}

그러나 제공하신 예를 고려할 때 더 적합한 솔루션은 모범 사례를 따르고 콜백을 전달하는 것입니다. doSomething()에 대한 함수:

function doSomething(func) {
  function callBack(d) {
    func(d);
  }

  myAsynchronousCall(param1, callBack);
}

doSomething(function(data) {
  console.log(data);
});

doSomething()에 함수를 전달하면 의심스러운 기술에 의존하지 않고 비동기 호출을 올바르게 활용할 수 있습니다.

위 내용은 UI를 차단하지 않고 비동기 JavaScript 함수를 효과적으로 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.