source

jquery의 약속 방법은 실제로 어떻게 작동합니까?

manysource 2023. 3. 26. 11:36

jquery의 약속 방법은 실제로 어떻게 작동합니까?

말인지 잘 요.delegate ★★★★★★★★★★★★★★★★★」promise 아레.

문서에 따르면...

  • delegate셀렉터 및 이벤트를 포장용기에 바인드하여 나중에 현재 및 미래 아이템에 다시 사용할 수 있도록 합니다.
  • promise()새로 로드된 모든 것이 일치할 경우 처음 바인딩된 시점으로 다시 매핑됩니다.아마도 나는 이 약속 방식을 잘 이해하지 못할 것이다.

그대로 Ajax이벤트가 처음 바인딩되었을 때처럼 트리거되거나 작동하지 않는 이유는 무엇입니까?

네, 문서 페이지에도 가봤지만 설명을 완전히 이해하지 못했습니다.

나는 이 질문에 조금 혼란스럽다.제 생각에 이것은 당신이 혼란스러워서 그런 것 같아요.promise ★★★★★★★★★★★★★★★★★」delegatejQuery는 jQuery를 사용합니다.이치노

delegate

delegate 는 jQuery 1.4.2에서 도입된jQuery의 기능입니다(jQuery 1.3에서 추가된 기능에 대한 접근법입니다).이것에 의해, 특히 AJAX 콜의 DOM 의 변경에 수반하는 특정의 문제가 해결됩니다.

이벤트 핸들러를 바인드할 때는 선택 항목에 바인드합니다. 이렇게 될 것 같아요.$('.special').click(fn) special중 트리거됩니다. 이러한 요소에 바인드하기 때문에 이러한 요소 중 하나에서 클래스를 삭제해도 이벤트가 트리거됩니다.반대로 클래스를 요소에 추가하거나 새 요소를 DOM에 추가하면 이벤트가 바인딩되지 않습니다.

Javascript에는 이를 완화시키는 "이벤트 버블링" 기능이 있습니다.이벤트가 트리거되면 브라우저는 먼저 이벤트가 발생한 요소에 알립니다.그런 다음 DOM 트리에 올라가 각 상위 요소에 알립니다.즉, DOM 트리 상단의 요소에서 이벤트 핸들러를 바인딩하고 하위 요소에서 트리거된 이벤트(핸들러가 바인딩되었을 때 존재하지 않는 이벤트도 바인딩할 수 있습니다.

delegatejQuery 。먼저 부모 요소를 선택합니다.하다발신측 요소가 이 셀렉터와 일치하는 경우에만 핸들러가 실행됩니다. 다음 이벤트합니다. 예를 들어, 를 들어 유형을 지정할 수 .click,submit,keydown와 마찬가지로.마지막으로 이벤트 핸들러를 지정합니다.

$('#containingElement').delegate('a.special', 'click', function() {
    alert('This will happen on all links with the special class');
});

promise

promise 는 jQuery 기능 세트에 비교적 최근에 추가된 또 다른 기능입니다.jQuery 1.5에서 소개된 개념의 일부입니다('deferred'와 'delegate'의 소리 유사성이 혼란의 원인이라고 생각합니다).이것은 비동기 코드의 복잡성을 추상화하는 방법입니다.가장 좋은 예는 AJAX 콜입니다.오브젝트는 에 의해 반환됩니다.$.ajax는 입니다.Deferred물건.예:

$.ajax({
    url: 'somepage.cgi',
    data: {foo: 'bar'}
}).done(function() {
    // this will be run when the AJAX request succeeds
}).fail(function() {
    // this will be run when the AJAX request fails
}).always(function() {
    // this will be run when the AJAX request is complete, whether it fails or succeeds
}).done(function() {
    // this will also be run when the AJAX request succeeds
});

즉, 여러 가지 점에서 의 바인딩 성공 핸들러와 동일합니다.$.ajax복수의 핸들러를 바인드 할 수 있는 것, 및 초기 콜 후에 바인드 할 수 있는 것을 제외합니다.

비동기식으로 처리하는 것이 유용한 또 다른 시기는 애니메이션입니다.함수에 대한 콜백을 제공할 수 있지만 위의 AJAX 예시와 유사한 구문을 사용하는 것이 좋습니다.

jQuery 1.6에서는 이 기능이 실현되었으며 이 구현의 일부입니다.당신이 전화하세요promisejQuery를 선택하면 오브젝트의 모든 애니메이션이 완료되면 이벤트 핸들러를 바인딩할 수 있는 오브젝트가 나타납니다.

예:

$('div.special').fadeIn(5000).promise().then(function() {
    // run when the animation succeeds
}).then(function() {
    // also run when the animation succeeds
});

다시 말씀드리지만, 이 방법은 기존 방식과 비슷하지만 유연성을 더합니다.핸들러는 나중에 바인드할 수 있으며 여러 개를 바인드할 수 있습니다.

요약

기본적으로는, 그 사이에 유의한 관계는 없습니다.delegate ★★★★★★★★★★★★★★★★★」promisejQuery로 하다

언급URL : https://stackoverflow.com/questions/6080050/how-does-jquerys-promise-method-really-work