Tôi đang cố gắng nắm bắt các hàm không đồng bộ Javascript và gọi lại.Javascript có đồng bộ (chặn) hoặc Không đồng bộ (không chặn) theo mặc định
Tôi bị kẹt trên khái niệm hàm gọi lại, nơi tôi đọc ở một số nơi: chúng được sử dụng để thực thi tuần tự mã (chủ yếu trong ngữ cảnh của jquery ví dụ như animate) và một số địa điểm đặc biệt trong ngữ cảnh của Nodej; chúng được sử dụng để thực thi song song Không đồng bộ và tránh việc chặn mã.
Vì vậy, có thể một số chuyên gia trong chủ đề này xin vui lòng làm sáng tỏ điều này và xóa mờ này trong tâm trí của tôi (ví dụ ??). để tôi có thể quyết định sử dụng chức năng gọi lại
hoặc chỉ phụ thuộc vào nơi bạn đang gọi/đặt chức năng gọi lại trong mã của bạn? .
Cảm ơn,
PS: Tôi sợ rằng câu hỏi này sẽ là gần như chủ quan nhưng tôi vẫn có thể mong đợi câu trả lời cụ thể cho điều này (có lẽ một số ví dụ)
Edit: thực sự đây là ví dụ từ internet mà làm cho tôi ambigous:
function do_a(){
// simulate a time consuming function
setTimeout(function(){
console.log('`do_a`: this takes longer than `do_b`');
}, 1000);
}
function do_b(){
console.log('`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`');
}
do_a();
do_b();
quả
`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`
`do_a`: this takes longer than `do_b`
khi JS là tuần tự thì do_b phải luôn theo sau do_a theo sự hiểu biết của tôi.
JavaScript JavaScript; nó phụ thuộc vào ngữ cảnh, cách sử dụng, công cụ, v.v. –
Bạn có thể cung cấp một số mã ví dụ mà bạn không chắc chắn nếu nó đang chặn và không chặn không? – Matt
JavaScript nói chung đồng bộ, nhưng setTimeout không đồng bộ theo định nghĩa. Đây là một mồi tốt về nó: https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout –