cep-promise icon indicating copy to clipboard operation
cep-promise copied to clipboard

async/await React Native

Open hadnet opened this issue 4 years ago • 7 comments

Quando tento usar async/await diretamente, lança o erro:

 Possible Unhandled Promise Rejection (id: 0):
TypeError: (0, _cepPromise.cep) is not a function. (In '(0, _cepPromise.cep)(86055645, {
                providers: ['correios']
              })', '(0, _cepPromise.cep)' is undefined)

Criando um async, funciona. Portanto, acredito que o cep-promise deveria ser rearranjado para funcionar com async/await diretamente.

    async function CEP(CEP: string) {
      return new Promise(resolve => {
        cep(CEP, {timeout: 5000, providers: ['brasilapi']}).then(response => resolve(response));
      });
    }

    const cepResponse = await CEP(userInfo.postal_code);
    console.log('cepResponse ', cepResponse);

hadnet avatar Jul 09 '21 23:07 hadnet

Poderia dar mais contexto, a função superior que você está usando tem o prefixo async?

bearkfear avatar Jul 21 '21 18:07 bearkfear

Sim.

hadnet avatar Jul 21 '21 19:07 hadnet

Acredito que seja algum problema de import ou de compilação do React, porque acho que em teoria o cep-promise aceita async/await pois retorna uma Promise.

Consegue mostrar como você está importando?

isaiasvallejos avatar Jul 21 '21 19:07 isaiasvallejos

Acho que deveria ser

return cep(CEP, {timeout: 5000, providers: ['brasilapi']})... em vez

cep(CEP, {timeout: 5000, providers: ['brasilapi']})... não?

felinto-dev avatar Jul 21 '21 21:07 felinto-dev

Estou com o mesmo problema: https://github.com/BrasilAPI/cep-promise/issues/212

Na resposta da issue coloquei que achei uma solução, no entanto, estou usando um framework chamado Nest e lá não funciona import de jeito nenhum, mesmo usando o mesmo tsconfig.json

Lá tenho que fazer const cepPromise = require("cep-promise")

felinto-dev avatar Jul 21 '21 21:07 felinto-dev

Acho que deveria ser

return cep(CEP, {timeout: 5000, providers: ['brasilapi']})... em vez

cep(CEP, {timeout: 5000, providers: ['brasilapi']})... não?

Sim, mas desse jeito TS dispara erro pra tudo quanto é lado. Por isso digo que tem que ser rearranjado.

hadnet avatar Jul 21 '21 23:07 hadnet

Acredito que a conversão para typescript será muito benéfica, se uma boa galerinha quiser eu posso fazer o PR. #169

bearkfear avatar Jul 22 '21 18:07 bearkfear