Я не уверен в возможности ожидания Angular, но, глядя на документацию, похоже, что это будет примерно так:
public getRealTimePrice(id: string): Promise<number> {
let ws = new $WebSocket('/price?Id=' + id + '&connectionId=' + this.randomUUID());
this.priceWebsocket = ws;
this.priceWebsocket.getDataStream()
.map(msg => JSON.parse(msg.data).price)
.subscribe(responseNumber => {
return responseNumber
})
.take(1)
.toPromise();
}
Затем вы можете вызвать его, используя ключевое слово await:
async getAsyncValue(id: string) {
const value = <number>await this.getRealTimePrice(id);
console.log(`number: ${value}`);
}
Обратите внимание, что перед функцией стоит ключевое слово "async", это необходимо, если в функции есть ключевое слово "await".
Ключевое слово "async" будет означать, что console.log не будет выполняться, пока обещание от функции "getRealTimePrice ()" не будет разрешено (или отклонено).