Обещание возвратится неопределенным и статус ожидающий - PullRequest
0 голосов
/ 22 февраля 2019

Я добавляю некоторые функции в приложение Angular, и вот в чем дело: я пытаюсь использовать функцию, которая создает обещание получить данные с сервера, но каждый раз, когда я пытаюсь использовать ее, она возвращает неопределенное,Я «отладил» с помощью console.log, напечатав мою переменную с результатом моей функции в качестве значения, и он напечатал Promise {'pending'}

Вот функция обещания ипеременная, которую я пытаюсь присвоить.

all_allies(text = ''){
return new Promise((resolve, reject) => {
  const _text = text ? /${text} : ''
  const path = `${this.env.apiPath}/all_allies${_text}`

  this.$http
    .get(path)
    .then(response => {
      const { data } = response
      resolve(data)
      return data;
    })
    .catch(error  => reject(error))
})

Переменная

let allies = this.AliadosFactory.all_allies();

Как видите, функция и переменная находятся в разных скриптах.

I 'пробовал использовать зарезервированное слово await, но все равно не работает

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Это потому, что при выполнении задания Обещание еще не разрешено / отклонено.

Существует два простых решения:

1.Использование then ()

this.AliadosFactory.all_allies (). Then (result => console.log (result));

2.Использование async / await

(обратите внимание, что в вашем классе нужен асинхронный метод)

async foo() {
let allies = await this.AliadosFactory.all_allies();
console.log(allies);
}

Также в all_allies() вам не нужно возвращать значение после вызоваметод resolve();

0 голосов
/ 22 февраля 2019

Можете ли вы попробовать этот метод?

let allies = await this.AliadosFactory.all_allies();
console.log(allies);

или как это?

this.AliadosFactory.all_allies().then(allies => console.log(allies);

Я уверен, что это должно работать, надеюсь, это поможет.

Хорошего дня:)

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