При выборе определенной коллекции из списка, я должен получить заголовки, используя http-вызов. Иногда наблюдаемые реагируют быстро, и данные заполняются, как и ожидалось, но много раз, когда наблюдаемые требуют времени. Если мы ожидаем ответа наблюдаемой, она работает, как и ожидалось, но когда выбор коллекции переключился быстро, поскольку первая наблюдаемая еще не ответила, а новая запускается, createHeader () получает messedup полностью.
Я прочитал многостатьи и узнал, что debounceTime помогает держать заметным. Я пытался, но не работал.
selectCollection(){
console.log('Selected Collection :', this.selectedCollection)
this.buildURL();
console.log('URL :', this.url1)
this.columnDefs = [];
this.getHeader()
}
buildURL(){
this.url1 = this.prefixURL + JSON.stringify(this.selectedCollection)
}
getHeader(){
let recordsObs$ = this.httpService.ajaxCall('GET', this.url1, this.reqData)
recordsObs$.subscribe(data => {
console.log('Records :',data)
this.records = data
this.createHeader(this.records[0])
})
}
createHeader(records){
this.columnDefs.push(this._header)
console.log('create Header',records)
records.fields.forEach(field => {
console.log(field)
var header = new Header();
header.headerName = field.fieldLabel
header.field = field.fieldName
header.width = 150
this.columnDefs.push(header)
})
this.gridOptions.api.setColumnDefs(this.columnDefs)
}
Ожидаемый результат: если я быстро переключу элементы из списка, все предыдущие наблюдаемые объекты должны быть отброшены, и только самые последние данные должны использоваться для createHeader ().