이러한 함수는 비동기적으로(비동기적으로) 실행되고 지연과 함께 반환된다는 것을 알고 있습니다. 따라서 JS 로더 curjs처럼 단일 콜백을 사용하여 병렬로 로드할 수 있는 방법이 있는지 알고 싶습니다. 그런 식으로요. 운이 좋게도 jQuery.when을 사용하면 두 개의 요청을 동시에 로드하고 콜백을 한 번만 실행할 수 있습니다.
jQuery 스크립트
앞서 언급한 것처럼 스크립트와 JSON 리소스를 로드하는 사용 사례는 다음과 같습니다.
$.when(
$.getScript('/media/js/wiki-min.js?build=21eb633'),
$ .getJSON(' https://developer.mozilla.org/en-US/demos/feeds/json/featured/')
).then(function(a, b) { // 또는 "를 사용할 수도 있습니다. .done"
// 로딩이 완료되었습니다. 여기서 몇 가지 종속성 작업을 수행할 수 있습니다.
});
리소스 로딩이 완료되면 지정된 done 또는 then 콜백이 트리거되어 요청이 완료되었음을 알 수 있습니다. 각 요청에서 반환되는 콜백 매개변수 개체의 유형이 다르기 때문에 위 요청은 다음 정보를 반환할 수 있습니다.
// 형식: [response, state, jqxhr], [response, state, jqxhr]
["(function(c){var e=c(" .from-search-navigate" );if(e…;if(j){g.apply(m,l)}}}})(window,document,jQuery);", "성공", 개체]
[배열[15], "성공", 개체]
위젯 템플릿과 같은 기존 AJAX XHR 요청을 추가해야 하는 경우 다음과 같이 할 수 있습니다.
$.when(
$. getScript(' /media/js/wiki-min.js?build=21eb633'),
$.getJSON('https://developer.mozilla.org/en-US/demos/feeds/json/featured/ '),
$.get('/')
).then(function(a, b, c) {
console.log(a, b, c);
});
Dojo Toolkit에는 오랫동안 이러한 기능이 있었지만 jQuery도 이러한 기능을 수행할 수 있다는 사실이 매우 기쁩니다. 현재 개발에서는 동기화되지 않고 반환 순서가 불확실한 여러 요청에 대해 동일한 콜백을 공유하는 것이 자연스러운 요구 사항이므로 jQuery는 확실히 시대와 함께 발전하고 있습니다!