2017-08-06 127 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)