Vue - возврат результата синхронного метода - PullRequest
0 голосов
/ 28 мая 2020

Я изо всех сил пытаюсь вернуть синхронные результаты метода ниже.

Я вызываю метод из другого метода:

var result = this.getVendor(id)
console.log(result)

Вот метод выборки:

methods: {
    async getData(id) {
          const response = await fetch(`${API_URL}api/${id}`, {
            method: "GET",
            headers: {
              authorization: `Bearer ${localStorage.token}`
            }
          })
            .then(res => res.json())
            .then(data => {
              return data;
            });

          await response;
        }
}

Как мне вернуть результаты response функции getData() для отображения в консоли?

1 Ответ

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

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

Вы можете использовать синтаксис ожидания, чтобы вернуть его правильно.

    async getData(id) {
          const response = await fetch(`${API_URL}api/${id}`, {
            method: "GET",
            headers: {
              authorization: `Bearer ${localStorage.token}`
            }
          })
           const data = await response.json()

           return data
        }

Вы можете получить доступ к данным вне этой функции, где бы вы ее ни вызывали.

let data = null
object.getData(2)
.then(x => {
data = x
})

Также, если вы собираетесь использовать asyn c await, обязательно используйте try and catch для обработки любых возникающих ошибок.

    async getData(id) {
       try {
          const response = await fetch(`${API_URL}api/${id}`, {
            method: "GET",
            headers: {
              authorization: `Bearer ${localStorage.token}`
            }
          })
           const data = await response.json()

           return data
        }
      } catch(err) {
    console.error(err)
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...