Реальный ответ заключается в том, что вы не можете.
Позвольте мне перефразировать то, что вы хотите: вы хотели бы иметь метод, который выполняет длинный серверный вызов для синхронного выполнения. Если бы это было возможно, оно заблокировало бы все приложение на 1 секунду или около того, чтобы получить результаты. целое приложение, включая отображение в браузере.
Вместо этого, чтобы заставить его работать, вы должны принять асинхронность. К сожалению, это означает работу с кодом, который использует результат метода callApi, который не предоставляется.
Если вы можете предоставить его, мы можем найти наилучший способ выполнить эту работу.
Позвольте мне объяснить вам, что происходит в вашем коде, нумерация строк по времени _execution:
// I'm splitting the rows, just to better describe the order of execution
const somethingThatYouDonTExpect = this.callApi(apiObject); // this runs first
return somethingThatYouDonTExpect; // this runs third, returning a subscription object
callApi(apiObject) {
// this runs second and returns IMMEDIATELY a subscription object, NOT a result
return this.myApiService.someRandomPostApiCall( apiObject ).subscribe(res => {
console.log(res); // this runs fourth, and the return is completely useless: subscribe is not expected to return anything.
res.valid ? { return true } : { return false };
});
}