我一直在閱讀有關callBack函數,並試圖使用它。但我沒有看到它的好處。以我的代碼爲例,我沒有看到#1和#2之間的區別。相反#1顯得如此毫無意義使用回調函數vs只在函數內插入函數有什麼好處
1:
function serverConnect(callback){
//Connecting to server
var xmlhttp;
var getString;
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var url="server/topHouses.php";
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
//Storing response from server, an array encoded by json
getString = $.parseJSON(xmlhttp.responseText);
callback(getString);
}
}
xmlhttp.send();
}
function doStuff(string){
//do stuff
}
serverConnect(doStuff);
2:
function serverConnect(){
//skip skip skip
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
//Storing response from server, an array encoded by json
getString = $.parseJSON(xmlhttp.responseText);
doStuff(getString);
}
}
function doStuff(string){
//do stuff
}
serverConnect();
#2沒有任何意義。 'serverConnect'不接受任何參數,但是調用正在嘗試傳入該函數。 –
@Spencer對不起,這是一個錯誤,我剛纔編輯它 – user308553
#2是好的,如果'serverConnect'只'doesStuff';你基本上是對回調進行硬編碼。但是如果你想在某種條件下做一些不同的事情呢?那時動態回調是有用的。 – elclanrs