import { Geolocation } from "@capacitor/geolocation";
const request_perm = () => {
try {
const stuff = Geolocation.requestPermissions();
console.log(stuff, "stuff");
} catch (err) {
console(err, "err");
}
};
como você pode ver, a chamada para Geolocation.requestPermissions
está dentro de a try block
, então não vejo por que ainda é um erro não detectado:
O erro desaparece se usar await
assim:
const request_perm = async () => {
try {
const stuff = await Geolocation.requestPermissions();
console.log(stuff, "stuff");
} catch (err) {
console.log(err, "err");
}
};
Ainda não está implementado, porém o erro agora é detectado pelo bloco catch.
Você tem que entender como o javascript funciona para esta questão. aqui está uma ótima explicação sobre o loop de eventos js e a fila de retorno de chamada.
Resumindo, a função Gelocation.requestPermissions() retorna uma Promise, o que significa que é uma função assíncrona. Se não for chamado na função assíncrona e a cláusula wait não estiver na frente da chamada, o mecanismo javascript não esperará até que a promessa seja cumprida, executando o restante das funções.
O que significa
console.log
que abaixo arequestPermissions
chamada será executada e a cláusula try-catch terminará antes que a promessa seja resolvida -> entra na fila de tarefas (fila microstask, na verdade) -> espera que a pilha de chamadas fique vazia