2014-04-24 6 views

답변

3

우선 : 시도해 보셨습니까? 이것을 직접 테스트하는 것은 매우 쉽습니다.

직접 대답하려면 : 당신이 생각하는 바에 달려 있습니다 (좀 더 정교함은 좋았을 것입니다).

일부 논리를 수행하고 약속을 반환하는 경우 (클릭 연결에 전혀 관련이없는 어떤 이유로) 클릭 핸들러에서 호출 할 수 있으므로 클릭 핸들러.

클릭 처리기의 논리가 비동기 작업에 종속되어 있기 때문에 완료 될 때까지 기다려야하는 경우 반환 된 약속이 무시되므로 클릭 처리기로 사용할 수 없습니다. 함수를 호출하는 클릭 핸들러를 정의 할 수 있으며 리턴 된 약속에 대한 콜백을 작성합니다.

더 구체적인 것은 더 정교한 질문이 필요합니다. 생각해 보면 상황의 (의사) 코드 예제가 이상적입니다.

예 :

function asyncLogic() { 
    var deferred = $.Deferred(); 
    // Perform async logic, then resolve 
    setTimeout(function() { 
     deferred.resolve(); 
    }, 100); 
    return deferred.promise(); 
} 

function handleClick(event) { 
    // Disable the button, then perform the async logic, when its done re-enable the button 
    $(event.target).attr('disabled', 'disabled'); 
    asyncLogic().then(function() { 
     $(event.target).removeAttr('disabled'); 
    }); 
} 

<form> 
    <input type="submit" data-bind="click: handleClick" /> 
</form> 
+0

설명 해 주셔서 감사합니다. – Phil

관련 문제