Как передать обещание в качестве параметра - PullRequest
1 голос
/ 13 апреля 2020

Я хочу передать обещание в качестве параметра другой функции, использовать его в качестве обратного вызова. Код, который у меня работает, работает следующим образом:

Component 1
function1() {
    let promise: Promise<any>;
    this.function2(promise);
    promise.then(response => console.log(response));
}

Component 2
function2(promise) {
    // Some Code 
    this.dialog.afterClosed().subscribe(data => {
       promise.resolve(data);
    });
}

Выполнение этого способа приводит к ошибке в функции 1, ошибка: Невозможно прочитать свойство 'then' из неопределенного

1 Ответ

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

Возможно, вы хотите сделать что-то вроде:

function1() {
  const promise: Promise = new Promise((resolve, reject) => {
    this.function2(resolve);
  });

  promise.then(response => console.log(response));
}

function2(resolveFn: any) {
    // Some Code 
    this.dialog.afterClosed().subscribe(data => {
       resolveFn(data);
    });
}

[ОБНОВЛЕНИЕ]: ИМО, вы должны делать это полностью с помощью наблюдаемых (здесь нет необходимости в обещаниях):

function1() {
  const afterClosed$: Observable<any> = this.function2();
  afterClosed$.subscribe((response: any) => console.log(response));
}

function2(): Observable<any> {
  // Some Code 
  return this.dialog.afterClosed();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...