2017-08-06 65 views
0

我正在使用以下代碼來獲取使用watchPosition的用戶位置。我還想定義失敗參數的代碼並將選項傳遞給watchPosition,但我不確定代碼應該放在哪裏。使用具有箭頭功能的watchPosition

if (navigator.geolocation) { 
     //Success callback defined, but where shouls fail & options go? 
     var positionTimer = navigator.geolocation.watchPosition((position) => { 
     var crd = position.coords; 

     console.log("Updated user loc..."); 
     console.log(crd.latitude + " : " + crd.longitude); 


     this.myLatitude = crd.latitude; 
     this.myLongitude = crd.longitude; 

     this.updateUserLocation(); 
    }, 
    console.warn("Error getting user location"), 
    this.options); 
} 
else { 
    alert("Geolocation not supported in your browser!"); 
} 
+0

這是一個在您發佈的文檔。第一個參數是成功回調,第二個參數是錯誤回調,第三個參數是具有選項的對象。它包括我知道的一個示例 – Gerardo

+0

,但我不知道使用箭頭函數時回調的位置。 – TomSelleck

+2

'watchPosition((success)=> {...},(error)=> {...},options);' – Gerardo

回答

2

這裏有你想要的東西:

const positionTimer = navigator.geolocation.watchPosition(
    (position) => { 
    // Your success code here 
    console.log(position); 
    }, 
    (err) => { 
    // Your error code here 
    console.log(err); 
    }, 
    { 
    // Options here 
    } 
) 

只需記住:

箭頭函數表達式的語法比函數表達式短,並且不綁定它自己的this,arguments,super或new.target。這些函數表達式最適合非方法函數,並且它們不能用作構造函數。

來源:Arrow functions

可以使用它們就像你使用會改變正常function的事情是上面提到的。

您也可以宣佈你的箭頭功能:

const success = (position) => { /* Success code here */ } 
const error = (err) => { /* Error code here */ } 
const options = { /* Options... */ } 

const positionTimer = navigator.geolocation.watchPosition(success, error, options); 
1

在這裏你去:

const options = {}; 
 
const id = navigator.geolocation.watchPosition((pos) => { 
 
    console.log(pos); 
 
}, (err) => { 
 
    console.log(err); 
 
}, options)