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

 
Dễ dàng thực hiện CSS Regression Testing với Resemble.js trong Drupal 7

Dễ dàng thực hiện CSS Regression Testing với Resemble.js trong Drupal 7

In a nutshell, Resemble.js takes two images, and generates a third that highlights the differences between the source images. Why is that exciting?

10 việc cần làm với thiết bị iOS mới mua

10 việc cần làm với thiết bị iOS mới mua

Những tính năng hay thiết lập mà bạn sắp nghe dưới đây chắc chắn sẽ giúp ích bạn rất nhiều trong sinh hoạt hằng ngày với thiết bị iOS.

Hướng dẫn tạo riêng cho bạn 1 tokens trong Drupal 7

Hướng dẫn tạo riêng cho bạn 1 tokens trong Drupal 7

Tokens are a pretty powerful weapon to have in your arsenal, and they actually come in useful a lot if you remember that they're there.

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

 

Diet con trung