Я пытаюсь поместить значения sh в массив, однако значения выводятся в неправильном порядке.
//Returns ongoing stream of the decibels in the room
async getNoise() {
let subscription = this.dbMeter.start().subscribe(data => {
this.noiseDb = data;
return data;
});
} //Returns your current location
getPosition() {
return new Promise((res, rej) => {
navigator.geolocation.getCurrentPosition(res, rej);
});
}
async startTimer() {
this.interval = setInterval(async() => {
interface pos {
coords ? : any,
}
var position: pos = await this.getPosition(); // wait for getPosition to complete
this.getNoise();
objects.push({
lat: position.coords.latitude,
long: position.coords.longitude,
noise: this.noiseDb
});
}, 500);
}
Это прекрасно работает при 2-секундной задержке, однако при наличии задержка в одну секунду или полсекунды, как показано выше, значения помещаются в массив в неправильном порядке, и одно и то же значение используется для нескольких записей. Например,
[{"lat":55.7558,"long":4.4784,"noise":45.58059,"time":"1.01"},
{"lat":55.7558,"long":4.4784,"noise":45.58059,"time":"2.01"},
{"lat":55.7558,"long":4.4784,"noise":40.197384,"time":"4.01"},
{"lat":55.7558,"long":4.4784,"noise":40.197384,"time":"3.01"}]
Я считаю, что мне нужно использовать Promise.all (), но я не уверен, как мне это реализовать. Кто-нибудь может мне помочь?