Bài 3 nodejs: Callback - như một Hàm Gọi Hàm

Bài 3 nodejs: Callback - như một Hàm Gọi Hàm

Callback - như một Hàm Gọi Hàm

Trong ngôn ngữ lập trình, callback (hàm gọi lại) là một hình thức của hàm gọi hàm. NgaNguyenDuy cũng đã đề cập đến callback trong diễn đàn này và có cho thí dụ về DOM. Ở đây mình chỉ lập lại với thí dụ khác và khai triển thêm theo chiều hướng node.js.

Thế nào là hàm gọi hàm? Quan sát một sự kiện thường sảy ra hằng ngày. Tôi nghe ông ta nói "chào cô", hay tôi nghe thủ phạm gào to "tao giết mày". Đại khái là như vậy, khuôn rập như tôi nghe ai đó nói "điền vào chỗ trống", hay theo ngôn ngữ lập trình tôi nghe(ai nói(câu gì đó)). Để mã ra cho dễ thấy:

function heSaid(word) {
    console.log(word);
}

function iHear(someFunction, value) {
    someFunction(value);
}

iHear(heSaid, "Hello");

Hàm iHear có hai parameters: một hàm nào đó và một giá trị. Hàm heSaid chỉ có một parameter. Khi run đoạn mã trên sẽ chạy ra chữ Hello. Để cho rõ ràng hơn mình chỉnh sửa output của heSaid chút đỉnh như sau:

function heSaid(word) {
    console.log(word);
}

function iHear(someFunction, value) {
    someFunction('I hear he said: "' + value + '."');
}

iHear(heSaid, "Hello");

C:\nodeDev> node callback.js
I hear he said: "Hello."

Lẽ dĩ nhiên ta cũng thể viết lại hàm gọi như thế này iHear(heSaid, "I love you. I love you so much!");
Hoặc thay vì heSaid ta có thể có một hàm mới the KillerSaid:

function theKillerSaid(word) {
    console.log(word);
}

function iHear(someFunction, value) {
    someFunction('I hear he said: "' + value + '."');
}

iHear(theKillerSaid, "I will kill you");

Callback - như một Hàm Gọi Hàm - thí dụ thực tiễn

Sau đâ là một thí dụ thực tiễn hơn về Array để các bạn khảo sát nhé. Đoạn mã này thay đổi giá trị của một array sao cho những phần tử của array có giá trị ngược lại, dương qua âm hay âm qua dương.

function xulyArray(arr, callback) {
    var resultArr = []; 
    for (var i = arr.length-1; i >= 0; i--)
        resultArr[i] = callback(arr[i]);
    return resultArr;
}

var arr = [1, 2, 3, 4];
var arrReturned = xulyArray(arr, function(arg) {return arg * -1;});
console.log(arrReturned);

C:\nodeDev> node callback.js
[ -1, -2, -3, -4 ]

Bạn thấy bài viết này như thế nào?: 
Average: 5 (1 vote)
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Tìm kiếm bất động sản

 

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Chuyên gia CNTT Đức được cảnh báo Windows 8 quá nguy hiểm

Chuyên gia CNTT Đức được cảnh báo Windows 8 quá nguy hiểm

Các chuyên gia CNTT nước này cho rằng cách Windows 8 tương tác TPM 2.0 có thể thành công cụ để Cơ quan an ninh quốc gia Mỹ (NSA) thu thập dữ liệu từ máy tính.

Sự khác biệt giữa hosting Linux và Windows

Sự khác biệt giữa hosting Linux và Windows

Trước đây, giữa hosting (dịch vụ lưu trữ) Linux và Windows luôn có một sự khác biệt rất lớn.

Biến Profile Facebook thành bức ảnh ghép độc đáo!

Biến Profile Facebook thành bức ảnh ghép độc đáo!

Mời bạn xem thêm bài viết liên quan: 30 giây cho một trang Profile độc đáo - đã xuất hiện những công cụ hỗ trợ làm nên trang profile thành bức ảnh ghép độc đáo như trên!

Công ty diệt chuột T&C

 

Diet con trung