0
関数を呼び出す前にアクセス許可を確認するラッパー関数(checkLocationPermission
)はここにあります(この場合はgeolocate()
)。ラッパーは、エラー処理を単純化するために使用されます。ラッパーでアクセス許可を確認する
問題は、async
関数が互いに呼び出すことです.Javascriptではそうではありません。
このようなラッパーをgeolocate()
またはparamとして渡される他の関数から有効なPromiseを返すようにするにはどうすればよいですか?コールの
async geolocate() {
return new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(
(position) => {
resolve(position);
},
(err) => {
reject(err);
},
{enableHighAccuracy: true, timeout: 30000, maximumAge: 3000}
);
});
}
async checkPermission(permission, fn) {
var status = await Permissions.getPermissionStatus(permission);
if (status!='authorized') {
Errors.permissionError();
this.resetAfterError();
return Promise.reject("PERMISSION ERROR");
}
try {
return fn();
} catch(err) {
Errors.internalError(err);
this.resetAfterError();
return Promise.reject("ERROR OTHER");
}
}
原産地:
var locationPromise = this.checkPermission('location',()=>this.geolocate());
'それはJavascriptをのような問題は、お互いを呼び出す非同期機能でありますこれが何を意味するのか正確にはわからない。このコードでどんな問題がありますか? 'locationPromise'のようなものは' geolocate'によって返されたPromiseです(私はこのコードが 'class'の内部にあると仮定しています) –