나는이 문제에 대한 해결책을 도처에서 찾았지만 지금까지 아무 것도 찾을 수 없었습니다 (아마도 잘못된 키워드를 사용하고 있습니다!) 이것이 중복되면 지적 해주십시오. 삭제).setTimeout이 완료 될 때까지 콜백 연기하기
당신 중 한 분이 친절하게도 나에게 다음과 같은 이유가 희망적으로 작동하지 않는 이유를 설명해 주시겠습니까? 이 뜻은 콜백이 setTimeout
이 success
콜백 내에서 완료되기 전에 콜백 되었기 때문에 그 이유를 이해하지 못한다는 것입니다. 새 스레드가 success
콜백 내에서 setTimeout
에 의해 시작 되었기 때문에이
$.ajax({
url: options.url,
data: options.data,
success: function(){
setTimeout(function(){
console.log('firing');
},2000);
},
dataType: options.dataType,
complete: function(){
console.log('ended');
}
});
인가?
콜백 함수를 success
콜백에 전달하지 않고도이 작업을 수행 할 수 있습니까?
그것은 빠른 +1이었고 정확히 내가 의심했던 것처럼! :-(콜백 내에 타임 아웃이 없었지만 200ms가 넘는 많은 코드가 있다면'complete' 콜백을 연기하겠습니까? 다른 말로하면,'' setTimeout'? –
시간 초과가 없으면 당연히 잘못 읽었을 것입니다. "완료되었습니다"이벤트가 성공한 후에 만 트리거됩니다. 이벤트의 관점에서 생각하기 시작하면 문제를 쉽게 해결할 수 있다고 생각합니다. ;) 간단하게 정의하고 트리거합니다. –
'complete' 콜백은'success' 콜백이 완료되면 호출됩니다. 어떻게 작동하지 않을까요? –