2017-02-25 7 views
2

私は基本的に、ネイティブのGPS機能をプロミスにラップしようとしています。 navigator.geolocation.getCurrentPositionの障害コールバックに到達すると、私は手動でプロミスを拒否したいと思います。ここでネイティブに手動で約束を拒否する

関連するコード:

var p = new Promise(); 

navigator.geolocation.getCurrentPosition(
    (position) => { ... all good here ... }, 
    (error) => { 
     // trying to reject manually a Promise 
     p.reject(error); 
    } 
); 

問題:

  1. 私は私が最初の行にnot a functionエラーを取得する約束の引数に任意の関数を渡さない場合
  2. 私が合格した場合私が得る機能undefined is not a function evaluating p.reject

答えて

3

私は混乱していました角度のような繰り延べられた約束で逃げる。

作業道がそうのような約束にGPS機能をラップすることです:

return new Promise(function(resolve, reject) { 
    navigator.geolocation.getCurrentPosition(
     (position) => { 
     resolve('All good'); 
     }, 
     (error) => { 
     reject(error); 
     } 
    ); 
}); 
+1

Promisificationが簡素化されます - 多分 'navigator.geolocation.getCurrentPositionAsync =()=>新しい約束(navigator.geolocationような単純な.getCurrentPosition.bind(navigator.geolocation)); ' –

+0

実際には、** [demo](https://jsfiddle.net/kk6nyLh6/)** –

関連する問題