使用带箭头功能的watchPosition

时间:2017-08-06 02:37:17

标签: javascript arrow-functions

我正在使用以下代码使用watchPosition获取用户位置。我还想为fail参数定义代码并将选项传递给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!");
}

2 个答案:

答案 0 :(得分:3)

这是你想要的:

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 :(得分:1)

你走了:

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