Angular - возвращение значения изнутри 'then' - PullRequest
0 голосов
/ 28 августа 2018

Я рассматривал похожие вопросы в StackOverflow, но ни один из них не соответствует моей конкретной проблеме:

У меня есть функция TypeScript в сервисе Angular 6, вызывающая функцию в другом сервисе, подобную этой:

Service1:

myArray: Array<IMyInterface>

...

getArray(): Observable<IMyInterface[]> {

    this.myArray= this.service2.getAnArray(1);
    return Observable.of(this.myArray);
}

Service2

getAnArray(myEntityId): Array<IMyInterface> {
  const myArray2: IMyInterface[] = [];

  this.getConnection().then(connection => {
    connection.invoke('GetEntityById', myEntityId).then((someJson: any) => {
      someJson.forEach( x => myArray2.push(x));       
      return myArray2;
    })
  }); 
}

Это дает мне ошибку в Service2 A function whose declared type is neither 'void' nor 'any' must return a value.

Мне нужно вернуть myArray2 после разрешения connection.invoke('GetEntityById', myId), так как массив заполняется только после разрешения, поэтому я пытаюсь сделать это внутри then.

Как мне это сделать?

1 Ответ

0 голосов
/ 28 августа 2018

Это может / не может удовлетворить ваши потребности, но вы можете просто вернуть Promise из вашего метода обслуживания, например:

getAnArray(myEntityId) {
  const myArray: IMyInterface[] = [];

  // Note the return here
  return this.getConnection().then(connection => {
    return connection.invoke('GetEntityById', myEntityId).then((someJson: any) => {
      someJson.forEach( x => myArray.push(x));       
      return myArray;
    })
  }); 
}

Ваш телефонный код будет выглядеть как

getAnArray(someId).then(function(theArray) {. . .});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...