Angular 9 значение ответа обещания в другом методе не определено, но из метода обещания оно может быть явно утешено - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть следующая функция, которая содержит обещание:

async checkValueIfExists(searchKey, appendedUrl, keyValue, ou, program) {
  const checkValuePromise = new Promise((resolve, reject) => {
    this.api.getData(this.globalVar.basicSearchFieldUrl + appendedUrl, 'dhis').subscribe(
      (resp) => {
        resolve(resp);
        // return resp;
      },
      (error) => {
        reject();
        console.log(error);
      }
    );
  });
}

И здесь я попытался поймать ответ:

async uploadData() {
    let awaitCheckValue =  await this.checkValueInDhis2(searchValue, appendToUrlEqual, keyField, ou, programId).then((res) => {
    console.log(res)
  }).catch(res=>console.log(res));
}

Значение утери всегда не определено, но когда Я утешаю его функцией checkValueIfExists(). Появился ответ.

Я попытался найти какое-то решение в стеке переполнение , но все еще то же самое.

Вот упрощенный stackblitz о ситуации.

1 Ответ

1 голос
/ 09 апреля 2020

Это потому, что вы решаете что-то из обещания, но никогда не возвращаете что-либо из своей функции asyn c.

Вам необходимо заменить это.

const checkValuePromise = new Promise((resolve, reject) => {

на

return new Promise((resolve, reject) => {

Это будет работать, и я проверил на вашем стеке. https://stackblitz.com/edit/simplified-promise-vj7d1q?file=src / приложение / app.component.ts

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