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

 
Xịt thuốc diệt côn trùng sai quy cách 2016

Xịt thuốc diệt côn trùng sai quy cách 2016

Dùng thuốc diệt côn trùng để diệt côn trùng gây bệnh hiện đang được nhiều người quan tâm trong điều kiện thời tiết nóng ẩm mưa nhiều hiện nay

Broadcom công bố VXL lõi tứ tích hợp 3G cho smartphone giá rẻ

Broadcom công bố VXL lõi tứ tích hợp 3G cho smartphone giá rẻ

Hãng sản xuất linh kiện bán dẫn Broadcom của Mỹ vừa chính thức công bố mẫu chip mới nhất có tên BCM23550 được tích hợp modem mạng 3G HSPA+ dành cho các dòng smartphone Android giá rẻ.

Sony Ericsson Xperia Ray & Active Android Phones Coming Soon

Sony Ericsson Xperia Ray & Active Android Phones Coming Soon

Sony Ericsson Xperia Ray and Sony Ericsson Xperia Active both feature 1GHz processors and compact designs and both models will come with Android 2.3 Gingerbread.

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

 

Diet con trung