Sunday, March 25, 2012

Callback Function ใน DWR

หลักการที่สำคัญใน Ajax คือ callback function หรือพูดง่ายคือ ฟังก์ชั่นที่จะรับข้อมูลกลับเพื่อทำงานต่อนั่นเอง ใน DWR callback ใช้ทำงานกับข้อมูลที่ส่งมาจาก method
ประเภทของ callback function คือ 1.
1.ถ้าฟังก์ชั่นไม่มี parameter เช่น HorizontalMenu.getMenuItems(setMenuItems) ฟังก์ชั่นนี้จริงๆแล้วไม่มี parameter แต่ในการเรียกใช้โดย javascript เราจึงได้เพิ่ม callback function เข้าไป คือ setMenuItems นั่นเอง 2.
2.ถ้าฟังก์ชั่นนั้นมี parameter เช่น CountryDB.getContries(selectLetters,setCountryRows) โดย selectLetters คือ input parameter และ setCountryRows คือ callback function
     สำหรับแบบนี้ ในการใช้ callback function คือ meta-data object ในการที่ javascript จะเรียกใช้งาน เช่น CountryDB.saveCountryNotes(ccode,newNotes,{ callback:function(newNote)
 { //function body here
 } });
 ฟังก์ชั่นนี้ คือ anonymous และมัน implementation โดยการเพิ่ม javascript ที่เรียก เข้าไปยัง remote Java method ประโยชน์ในการทำลักษณะนี้คือ ง่ายในการอ่าน และจะ execute ทันทีหลังจากได้รับค่าที่ return มาจาก Java method
สำหรับประโยชน์อื่นๆคือเราสามารถเพิ่ม option ในการเรียกได้ คือสามารถเพิ่ม timeout และ error handler เช่น
 CountryDB.saveCountryNotes(ccode,newNotes,{ callback:function(newNotes)
 { //function body here }, timeout:10000, errorHandler:function(errorMsg){ alert(errorMsg);} });

 มีความเป็นไปได้ว่า Java method จะไม่ return ค่ากลับมา ในการเพิ่ม callback ไปยัง method ที่ไม่ return ค่า จะมีประโยชน์ในการรับการแจ้งเตือน เมื่อ remote call ทำงานเสร็จ