Js callback

Callback là function được gọi sau khi 1 function đã thực thi xong. Trong js, function là object, nó có thể nhận tham số là 1 function, và cũng có thể trả về 1 function. Cho nên bất cứ function nào được truyền vào như 1 tham số sẽ có tên là callback.

Ví dụ sau: function 1 sẽ thực hiện sau 500 mili giây bằng cách sử dụng setTimeout:

function f1() {
  setTimeout(function() {
    console.log("f1");
  }, 500);
}

function f2() {
  console.log("f2");
}

f1();
f2();

// Kết quả:
f2
f1

Kết quả màn hình sẽ in ra f2 trước f1. Như vậy để đảm bảo f2 thực hiện sau f1, ta cần dùng callback.

function doHomework(subject, callback) {
  console.log(`Start ${subject} homework`);
  callback();
}

doHomework('Math', function() {
  console.log('Finish homework');
});

// Kết quả:
// Start Math homework
// Finish homework

Ta cũng có thể khai báo callback function ở nơi khác:

function alertFinish() {
  alert('Finish');
}

// gọi hàm doHomework ở trên:
doHomework('Math', alertFinish);

Bạn có thể sử dụng nhiều callback function làm đối số cho hàm. Ví dụ ajax:

function successCallback() {
    // Do something
}

function completeCallback() {
    // Do something
}

function errorCallback() {
    // Do something
}

$.ajax({
    url     :"google.com",
    success :successCallback,
    complete:completeCallback,
    error   :errorCallback
});

Callback phải là 1 function, nếu truyền vào 1 type khác thì sẽ nhận được error notice. this trong callback là đối tượng Window, nên nếu định nghĩa hàm callback trong object thì không thể truy cập đến dữ liệu của object thông qua this.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *