我正在构建一个简单的天气应用程序,它使用REST服务显示用户输入的任何城市中的当前天气数据.
所以我的问题是 – 给定一个由5个城市组成的数组,对于该数组中的每个元素,为REST服务(通过Angular服务)发出调用的最佳方法是什么.
这是我最初尝试的代码摘录:
locations: string[] = ["Seattle","Woodinville","Krasnoyarsk","Stockholm","Beijing"]; ... ngOnInit() { this.locations.forEach(function(element) { this.weatherService.getWeather(element).subscribe((data) => { console.log(data); }); }); }
但这会产生错误:
编译失败.
c:/Projects/weather-app/src/app/components/dashboard/dashboard.component.ts(19,12):’void’类型中不存在属性’weatherService’.
我意识到’forEach’在这里不起作用 – 但是在ng 4中这样做的最佳做法是什么?
谢谢.
解决方法
这将在Observables数组中映射位置数组,
当所有响应都到位时,forkJoin将发出值
当所有响应都到位时,forkJoin将发出值
Observable .forkJoin(this.locations .map((element) => this.weatherService.getWeather(element)) .subscribe((data) => console.log(data));