請問各位先進,看到一段javascript程式碼,但不太懂裡面的邏輯,程式碼如下,有刪除大部份程式碼,只留下看不懂的部份~
1.請問$httpApi這是jquery的方法嗎?用這個關鍵字去google找都找不到相關資訊,還是這是自訂意的模組套件?
2.程式碼執行到最後又呼叫func();意思是整個Save()又要整個重跑一次?這樣下去不就沒完沒了跑不完?直到error才會結束。我的理解對嗎?
let event = {
Save: function(func) {
//己刪除大部份前處理程式碼..........
$httpApi.post({
apiMethod: 'Save',
data: {
data: data,
}
}, function(res) {
if (!res.isSuccess) {
alert(res.errmsg);
return;
}
//己刪除大部份前處理程式碼..........
func();
});
}
}
events.Save(function() {
//doSomething.....
events.loadAllData();
Init();
});
第1點:不知道妳從哪裏看到的程式碼,但$httpApi方法肯定是那段程式碼所屬的應用自己封裝發送異步請求的庫,妳明白這壹點即可。
第2點:“程式碼執行到最後又呼叫func()”,這個func是event.Save的形參,我們看實際呼叫的地方:
events.Save(function() {
//doSomething.....
events.loadAllData();
Init();
});
在這種場景下,func就是這壹塊程式碼
function() {
//doSomething.....
events.loadAllData();
Init();
}
並未呼叫Save()方法,所以不會壹直跑下去
nero
關於第二點,經過前輩的指點,我想再更確定的一點是,如果沒有呼叫func()的話,那裡面的callback function就不會執行嗎?(這應該叫callback function沒錯吧?)
這一段程式碼應該是Save執行完後會自動執行的,為什麼還要手動呼叫,還是我誤會了它。。。><
我理解的你説的callback function,是指是的下面這部分程式碼:
function() {
//doSomething.....
events.loadAllData();
Init();
}
這一部分程式碼是一個匿名函數,在JavaScript中,函數的引用可以作爲其他函數的參數,func就是這個匿名函數的引用,所以如果不呼叫func()的話,callback function是不會執行的
了解,那是我誤會它的執行流程了,感謝指教~