Đăng nhập
Bạn chưa có tài khoản? Đăng ký.
Bạn đã quên password?
Các hàm JavaScript được thực thi theo trình tự mà chúng được gọi. Không phải theo trình tự mà chúng được xác định.
Ví dụ sau sẽ kết thúc với câu "Goodbye!".
Ví dụ
function myDisplay(text) { document.getElementById('demo').innerHTML = text; } function myFirst() { myDisplay("Hello!"); } function mySecond() { myDisplay("Goodbye!"); } myFirst(); mySecond();
Ví dụ này sẽ kết thúc với câu "Hello!".
Ví dụ
function myDisplay(text) { document.getElementById('demo').innerHTML = text; } function myFirst() { myDisplay("Hello!"); } function mySecond() { myDisplay("Goodbye!"); } mySecond(); myFirst();
Đôi khi chúng ta muốn kiểm soát tốt hơn thời điểm để thực thi một hàm.
Giả sử chúng ta muốn thực hiện một phép tính và sau đó hiển thị kết quả.
Chúng ta có thể gọi một hàm tính toán (myCalculator), một biến lưu kết quả, rồi gọi một hàm khác (myDisplayer) để hiển thị kết quả từ biến đã lưu.
Ví dụ
function myCalculator(x1, x2) { var x; x = x1 + x2; return x; } function myDisplayer(y) { document.getElementById('demo').innerHTML = y; } var result = myCalculator(5, 5); myDisplayer(result);
Hoặc, chúng ta có thể gọi một hàm máy tính (myCalculator) và để hàm máy tính gọi hàm hiển thị (myDisplayer).
Ví dụ
function myDisplayer(y) { document.getElementById('demo').innerHTML = y; } function myCalculator(x1, x2) { var x; x = x1 + x2; return myDisplayer(x); } myCalculator(5, 5);
Vấn đề với ví dụ đầu tiên ở trên, là chúng ta phải gọi hai hàm để hiển thị kết quả.
Vấn đề với ví dụ thứ hai là chúng ta không thể ngăn hàm myCalculator hiển thị kết quả.
Bây giờ là lúc để thực hiện gọi lại hàm.
Sử dụng một lệnh gọi lại, chúng ta có thể gọi hàm máy tính (myCalculator) với một lệnh gọi lại và để hàm máy tính chạy lệnh gọi lại sau khi nó kết thúc tính toán.
Ví dụ
function myDisplayer(y) { document.getElementById('demo').innerHTML = y; } function myCalculator(x1, x2, myCallback) { var x; x = x1 + x2; myCallback(x); } myCalculator(5, 5, myDisplayer);
Trong ví dụ trên, myDisplayer
là tên của một hàm.
Nó được chuyển đến hàm myCalculator()
như một đối số.
Các ví dụ trên không phải là thú vị cho lắm. Chúng được đơn giản hóa để hướng dẫn cú pháp gọi lại.
Trường hợp các lệnh gọi lại thực sự hữu ích là trong các hàm không đồng bộ, nơi một hàm phải đợi một hàm khác (như đợi tải tệp).
Các hàm không đồng bộ được đề cập trong bài tiếp theo.