Một ví dụ điển hình là hàm JavaScript
setTimeout()
.Đăng nhập
Bạn chưa có tài khoản? Đăng ký.
Bạn đã quên password?
Các ví dụ được sử dụng trong chương trước rất đơn giản hóa. Mục đích của các ví dụ là để chứng minh cú pháp của các hàm gọi lại.
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ư là một đối số.
setTimeout()
.Khi sử dụng hàm JavaScript setTimeout()
, chúng ta có thể chỉ định một hàm được thực thi sau khi hết một khoản thời gian xác định.
Ví dụ
setTimeout(myFunction,3000); function myFunction() { document.getElementById('demo').innerHTML = "<h1>Hello JavaScript!</h1>" ; }
Trong ví dụ trên, hàm myFunction
được sử dụng như một hàm gọi lại.
myFunction
được chuyển đến hàm setTimeout()
như một đối số.
3000 là số mili giây trước khi hết thời gian, vì vậy myFunction()
sẽ được gọi sau 3 giây.
Thay vì chuyển tên của một hàm làm đối số cho một hàm khác, chúng ta luôn có thể chuyển toàn bộ một hàm để thay thế.
Ví dụ
setTimeout(function() {myFunction("<h1>Hello JavaScript!</h1>");},3000); function myFunction(text) { document.getElementById('demo').innerHTML = text ; }
Trong ví dụ trên, function(){ myFunction("<h1>Hello JavaScript!</h1>");}
được sử dụng như một hàm gọi lại. Nó là một chức năng hoàn chỉnh. Hàm hoàn chỉnh được chuyển tới hàm setTimeout()
như một đối số.
3000 là số mili giây trước khi hết thời gian, vì vậy myFunction()
sẽ được gọi sau 3 giây.
Khi sử dụng hàm JavaScript setInterval()
, chúng ta có thể chỉ định một hàm gọi lại sẽ được thực thi sau mỗi khoảng thời gian xác định.
Ví dụ
setInterval(myFunction,1000); function myFunction() { const date = new Date(); var x; x = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); document.getElementById('demo').innerHTML = x ; }
Trong ví dụ trên, hàm myFunction
được sử dụng như một hàm gọi lại.
myFunction
được chuyển đến hàm setInterval()
như một đối số.
1000 là số mili giây giữa các khoảng thời gian, vì vậy hàm myFunction()
sẽ được gọi là mỗi giây.
Nếu chúng ta tạo một hàm để tải tài nguyên bên ngoài (như tập lệnh hoặc file), chúng ta không thể sử dụng nội dung trước khi nó được tải đầy đủ.
Đây là thời điểm hoàn hảo để sử dụng một hàm gọi lại.
Ví dụ này bên dưới một tệp HTML (mycar.html) và hiển thị tệp HTML trong một trang web, sau khi tệp được tải đầy đủ.
Ví dụ
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function getFile(myCallback) { var req = new XMLHttpRequest(); req.open('GET', "/exampleJS/mycar.html"); req.onload = function() { if (req.status == 200) { myCallback(this.responseText); } else { myCallback("Error: " + req.status); } } req.send(); } getFile(myDisplayer);
Trong ví dụ trên, myDisplayer
được sử dụng như một hàm gọi lại.
myDisplayer
được chuyển đến hàm getFile()
như một đối số.
Dưới đây là file mycar.html.
mycar.html
<img src="/images/img_car.jpg" alt="Nice car" style="width:100%"> <p>Ô tô là phương tiện giao thông có bánh, có động cơ dùng để vận chuyển. Hầu hết các định nghĩa của thuật ngữ chỉ rõ rằng ô tô được thiết kế để chạy chủ yếu trên đường, có chỗ ngồi cho một đến tám người, thường có bốn bánh.</p> <p>(Wikipedia)</p>