트리거 함수는 동기식으로 표시됩니다. 즉, 모든 바운드 함수는 동 기적으로 순서대로 실행되는 것처럼 보입니다 (호출 된 함수는 비동기 적으로 처리 할 수 있지만 문제는 아닙니다).jQuery 트리거 함수가 동기가 보장되는지
이 사용자와 비 사용자 (마우스를 클릭 등) 이벤트에 대한 사실인가요? 자바 스크립트의 단일 스레드 보장이 적용되지 않는 이벤트가 있습니까?
가 참이면
이 동작은 각각의 결합 된 기능에 시간 제한을 삽입하지 않고 비동기들을 실행하도록 변경 될 수 있는가?var ele = $('#blah');
// Example of the bound function doing something synchronously
ele.bind('customEvent.sync', function() {
// Do something synchronously
window.foo = 'foo';
});
// Example of the bound function doing something asynchronously
ele.bind('customEvent.async', function() {
window.setTimeout(function() {
// Do something asynchronously
window.bar = 'bar';
}, 0);
});
// Trigger both events
ele.trigger('customEvent');
// If trigger is guaranteed to be synchronous this should alert 'foo:undefined' or possibly 'foo:bar' depending on whether the asych function was called first
// If trigger is NOT synchronous 'undefined:undefined', 'foo:undefined', 'undefined:bar', or 'foo:bar' could be alerted
alert(window.foo + ':' + window.bar);
UPDATE 참조 : 여기
는 문제를 보여주는 샘플입니다 Is JavaScript guaranteed to be single-threaded? 사용자 정의 이벤트가 있기 때문에 자바 스크립트의 단일 스레드 성격의 동기로 보장됩니다. 일부 이벤트 유형은 브라우저 불일치로 인해 동기화되지 않을 수 있습니다.
만약 당신이 당신의 관심사가 무엇인지 예를 들면 훨씬 더 쉽게 – charlietfl
내 관심사는 내 방아쇠를 호출 한 다음에 실행되기 전에 내 방아쇠라고 불리는 바운드 함수에 의존 할 수 있는지의 여부입니다 – Kyle
질문이있는 것 같습니다. 충돌하는 : "호출 된 함수가 비동기식 작업을 수행 할 수 있지만 질문이 아닙니다."그리고 "각각의 바인딩 된 함수에 시간 초과를 삽입하지 않고 비동기 실행으로 동작이 변경 될 수 있습니까?"(나는 아니지만 * 질문이었습니다) –