2016-05-08 54 views
0

我需要一些幫助來調整此代碼。geoTest函數 - 創建if/else語句

該任務要求我聲明一個名爲geoTest()的新函數。 它應該包含一個if/else語句來檢查導航器.geolocation屬性的值。如果該值爲truthy,則該函數應該調用getCurrentPosition()方法,在成功時運行createMap()函數或在失敗時運行fail()函數。如果navigator.geolocation值是虛假的,則該函數應該調用fail()函數。

- 超時是從另一個步驟。

這裏是我的代碼:

function geoTest() { 
    var waitForUser = setTimeout(fail, 10000); 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(createMap()); 
    } else { 
     fail(); 
    } 
} 

感謝。

回答

0

您需要將回調函數傳遞給getCurrentPosition。要傳遞一個函數作爲參數,使用函數名稱而不是後面加括號(圓括號使其立即調用函數並將返回值傳遞給該函數)。

說明說如果getCurrentLocation()失敗,則調用fail(),但當navigator.geolocation沒有設置時,您要調用它。 getCurrentLocation()需要第二個回調函數,當它失敗時會被調用。

function geoTest() { 
    var waitForUser = setTimeout(fail, 10000); 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(createMap, fail); 
    } 
} 

您的任務幾乎與getCurrentPosition的MDN文檔中顯示的示例相同。