ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

Promiseでretryする仕組みを導入する

スポンサードリンク

そういえば、年末もそんなことにハマっていたな。そうかretryというキーワードかということを最近思った。

パクリ リスペクトした記事はこちら。

qiita.com

今回やりたかったこととして、GPS情報を取得するためにGeolocation APIを使っているが、こいつが何度か失敗するので、retryしたいなというのがモチベーション。

また、書いてあるコードをちゃんと理解していないのもあって、試行錯誤しながら コピペ 書いてたら下記のようにしたら利用できた。

const setCurrentPositon = (pos) => {
  const crd = pos.coords
  console.log(crd.latitude)
  console.log(crd.longitude)
}
retryExponentialBackoff(3, getCurrentPosition)
  .then((pos) => {
    setCurrentPositon(pos)
  })
  .catch((err) => {
    alert('失敗だお')
  })
}

テストは、retry関数に食わす関数内で throw を投げたらretryが確認できる(もちろん、確認時は失敗する)

developer.mozilla.org

それにしても、モダンな感じのJavaScriptの書き方になれていないので四苦八苦