Как вернуть значение в функциях asyn c await? - PullRequest
0 голосов
/ 05 мая 2020
const getNetwork = async () => {
        const status = await Network.getStatus();
        setStatus(status.connected);
        console.log(networkStatus);
        if (status.connected)
            return true;
        else
            return false;
}

Как я могу вернуть значение из функции getNetwork?

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Практически так же, как и любые другие обещанные функции

const res = await getNetwork();

или

getNetwork().then((res) => {
  // get response, handle the rest 
})
0 голосов
/ 05 мая 2020
Операции

Asyn c возвращают объекты Promise. Если вы возвращаете Promise из функции, как в вашем примере, и напрямую передаете его переменной, его типом будет Promise. В результате вы сможете вызывать для него методы then () и catch ().

const res = getNetwork();
res.then(
  (responseData) = doSomething();
)

Но если вы сохраните возвращаемое значение с префиксом await, тогда он вернет разрешенные данные

const res = await getNetwork();
console.log(res); // res will be equal responseData above

Но вы должны быть осторожны с ошибками, если он выдаст ошибку, ваш код взломает sh. Я лично предпочитаю инкапсулировать этот процесс в блоке try-catch, и если я поймаю ошибку, я верну нулевое значение. Пример кода ниже

async getResponse(): Promise<object> { // object can be changed with your response type
  try {
    const res = await getNetwork();
    return res;
  } catch (e) {
    return null;
  }
}
...