ルート検索の際のコールバックをPromise化してみる
/**
* ルート検索結果をPromiseに包んで返す
*/
function routePromise(request) {
return new Promise(function(resolve, reject) {
var d = new google.maps.DirectionsService();
d.route(request, function(result, status){
if (status == google.maps.DirectionsStatus.OK) {
resolve([result, status]);
} else {
reject([result, status]);
}
});
});
}
これで、呼び出しの際に以下のように使える。ScalaのOptionみたいなものがあれば、もっとちゃんとできるのだけど。
var result, status;
await routePromise(request)
.then((res) => {
[result, status] = res; // resolveされたときの返り値
})
.catch((err) => {
[result, status] = err; // rejectされたときの返り値
});