這是一個功能,您將在Javascript中經常看到。它通常被稱爲回調。括號的缺乏是因爲Javascript允許你像一個變量那樣對待一個函數,通常被稱爲「一等函數」。您正在將success
函數傳遞給getCurrentPosition
方法,但實際上並沒有調用success
方法。
當您致電navigator.geolocation.getCurrentPosition(success);
時,您對getCurrentPosition
函數說,找到該位置後,您希望它調用您提供的函數並將其傳遞給它的位置。
的getCurrentPosition
方法會做類似如下:
function getCurrentPosition(successCallback) {
var position = loadFromSomewhereThatMayTakeAWhile();
successCallback(position);
}
getCurrentPosition
可能需要很多秒鐘甚至幾分鐘來獲取當前位置。您不希望瀏覽器在發生這種情況時停止響應。回調允許你說「當這個操作完成時,調用這個其他方法來做結果的事情」。然後,瀏覽器可以繼續執行其他操作,並且只在操作完成時才執行回調。
的jQuery ajax功能使用此回調風格。
var whenSuccessful = function(data, status, xhr){
console.log('The data was loaded successfully.')
};
var whenFailed = function(xhr, status, error){
console.log('The request failed!')
};
$.ajax({
url: "http://myserver.com/some_data.json",
error: whenFailed, // do this if the request fails for any reason
success: whenSuccessful // do this if the data was loaded successfully
})
謝謝,澄清我的問題。 – Katgus