промисы использовать во втором ангуляре это треш, надо переучиватся на стиль второго ангуляра, сами разработчики ангуляра 2+ уже включили rxjs во фреймворк и отказались от промисов.
buildMarkers(cars): void {
return Observable.create(observer => {
for (let i in cars) {
let lat: number = cars[i].coordinates.lat;
let lon: number = cars[i].coordinates.lon;
let pin = cars[i].pin;
let singleMarker = new Marker([lat, lon], {
icon: new DivIcon({
className: 'my-div-icon',
html: this.getHtmlMarker(cars, pin)
})
});
this.layers.push(singleMarker);
};
observer.next();
observer.complete()
});
};
public mapReady(map) {
this.map = map;
let that = this;
that.buildMarkers(this.cars).subscribe(() => {
// тут выполните код, который гарантированно выполнится после buildMarkers
});
};