у вас асинхронная проблема. вы возвращаете resultOfFilter
, но ваш запрос на получение за это время обрабатывается. вам нужно дождаться завершения вашего запроса, после чего вернуть resultOfFilter
myServer.prototype.filterList = async function(_data, filterModel) {
const resultOfFilter = [];
function filterData(filtModel) {
let httpParams = new HttpParams();
for (const f in filtModel) {
// some code
}
const httpOptions = {
params: httpParams,
};
return that.httpClient.get(`${baseUrl}${tableName}`, httpOptions);
}
const filteredData = await filterData(filterModel).toPromise();
filteredData.forEach((item) => {
resultOfFilter.push(item);
});
return resultOfFilter;
};
Пример использования
import { Component, OnInit } from '@angular/core';
import { myServer } from 'path-to-service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
constructor(private myServer: myServer) { }
ngOnInit() {
this.getResultOfFilter();
}
async getResultOfFilter() {
let result = await this.myServer.filterList(data, filterModel);
console.log(result, 'getResultOfFilter');
}
}
или
import { map } from 'rxjs/operators';
myServer.prototype.filterList = function(_data, filterModel) {
const resultOfFilter = [];
function filterData(filtModel) {
let httpParams = new HttpParams();
for (const f in filtModel) {
// some code
}
const httpOptions = {
params: httpParams,
};
return that.httpClient.get(`${baseUrl}${tableName}`, httpOptions);
}
return filterData(filterModel).pipe(
// map operator should be imported from `rxjs/operators`
map(filteredData => {
filteredData.forEach((item) => {
resultOfFilter.push(item);
});
return resultOfFilter;
})
);
};
Пример использования
import { Component, OnInit } from '@angular/core';
import { myServer } from 'path-to-service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
constructor(private myServer: myServer) { }
ngOnInit() {
this.getResultOfFilter();
}
getResultOfFilter() {
this.myServer.filterList(data, filterModel).subscribe(result => {
console.log(result, 'getResultOfFilter');
});
}
}