I want to wait for three HTTP requests to complete before calling another function to work on the data returned by the three HTTP requests.
I tried looping the number of rooms (equivalent to the number of HTTP requests required) and then pushing the devices into an array. I need all three HTTP requests to be completed before passing the array of devices to the next function to work on.
getDeviceListByRoom(rooms_id_array: string[]) {
console.log('The rooms_id_array is: ', rooms_id_array);
this.room_device_map = new Map;
let count = 0;
for (const id of rooms_id_array) {
const devicesByRoom = this.Services.getDeviceByRoom(id);
devicesByRoom.subscribe((res: any) => {
if (res.code === 200) {
// this statement will map the list of devices to the room.
this.room_device_map.set(id, res.data);
// this statement will just push the list of devices from different room into one array.
this.all_devices_list.push(res.data);
console.log('count is: ', count++);
}
}, err => {
console.error('ERROR', err);
});
console.log('In all_devices_list is: ', this.all_devices_list);
}
console.log('Lalalalal');
}
The code above will return 'Lalalala' first followed by the console print out of the count variable. Understandably, the for...of function is non blocking...?