Топор ios не разрешается, государство все еще обещает - PullRequest
0 голосов
/ 02 февраля 2020

Я уже некоторое время использую топор ios, но я просто не могу обойти это. Пробовал и топор ios, и выбирал, но это просто не решает мое обещание, и мое состояние остается обещанием.

import axios from 'axios';

export const login = async (state, payload) => {

    try {
        const response = await axios.post('http://localhost:8080/token-auth/', payload)
        const data = await response.data



         return  {
            user: data.user,
            loggedIn: true,
            error: false
        }
    }


     catch (error) {
        return {
            user: null,
            loggedIn: false,
            error: true
        }

    }


}      const response = await axios.post('http://localhost:8080/token-auth/', payload)
        return  await response.data

    }


     catch (error) {
        return {
            user: null,
            loggedIn: false,
            error: true
        }

    }


}

Всегда возвращает обещание, а не данные, но если я console.log, Я получаю данные на консоли.

1 Ответ

1 голос
/ 02 февраля 2020

async функция всегда будет возвращать обещание.

Слово «асинхронный» перед функцией означает одну простую вещь: функция всегда возвращает обещание. Другие значения автоматически включаются в разрешенное обещание.

Таким образом, вы должны обрабатывать обещание при вызове асинхронной c функции.

Попробуйте это.

import axios from "axios";

export const login = async (state, payload) => {
  try {
    const response = await axios.post(
      "http://localhost:8080/token-auth/",
      payload
    );
    const data = await response.data;
    return {
      user: data.user,
      loggedIn: true,
      error: false
    };
  } catch (error) {
    return {
      user: null,
      loggedIn: false,
      error: true
    };
  }
};

(async function() {
  let response = await login(...);
  console.log(response);
})()

Пример:

async function f() {
  return 1;
}


//Handle promise with then
f().then(console.log); // 1
...