Моя проблема довольно сложная. Ситуация выглядит следующим образом:Выполнение http-запроса со свойствами из переменной, которая поступает из другого запроса http
У меня есть функция:
private updateWatchlistTable(name) {
this._watchlistElements = [];
this.http.get('http://localhost:8080/getPoints/' + name)
.subscribe(res => this._watchlistElements = res.json());
}
Какой скачивает JSON файл с сервера, который выглядит как: [{"xid":"DP_049908","name":"t10"},{"xid":"DP_928829","name":"t13"},{"xid":"DP_588690","name":"t14"}]
и сохраняет его внутри: private _watchlistElements: Array<WatchlistComponent> = [];
переменной.
На данный момент все работает хорошо.
И теперь, у меня есть еще одна функция:
private getValues() {
this._watchlistElements.map((v => this.http.get('http://localhost:8080/getValue/' + v.xid)
.subscribe(res => this._values = res.json())));
}
Какие данные загрузки для каждой точки xid
от переменной _watchlistElements
. Ответ, который приходит (только в этом случае) "xid": "DP_049908"
момент выглядит следующим образом:
{"value":"32.339264","ts":1476778297100,"xid":"DP_049908"}
В чем проблема?
Проблема заключается в том, что эта вторая функция getValues()
не в состоянии выполнить эти HTTP вызовы, потому что в основном он не может видеть xid
свойство из переменной _watchlistElements
. Я не уверен на 100%, но я думаю, что это вызвано тем фактом, что эти вызовы ASYNCHRONOUS. Эта вторая функция getValues()
- при выполнении - не имеет доступа к свойствам _watchlistElements
, так как содержимое этой переменной также загружается из асинхронного запроса.
Если я делаю это статически, сохраняя эти jsons в отдельных файлах - все работает хорошо.
Как выглядит ошибка?
ERROR в [по умолчанию] C: \ Users \ SRC \ приложение \ appBody \ Список наблюдения \ watchlist.component.ts: 51: 115 Свойство 'XID' не существует на типе 'WatchlistComponent'.
Любая помощь очень ценится!
Эта третья функция обязательна? Или это просто альтернатива для первого? –
Нет. Последний '.then()' не нужен, если вы обращаетесь к значениям в другой части 'javascript' – guest271314
' Promise.all() 'может не понадобиться, если' .map() 'не' Array .prototype.map() 'и' .subscribe() 'возвращает объект' Promise'. – guest271314