如何在承诺/可观察的呼叫后读取数组中的数据
我不喜欢JavaScript和Angular,目前正在从事某些UI任务,并且对JavaScript的可行/了解
我想要的内容很小,基于钥匙字段的基础过滤对象。
当前,代码正在使用API,该API在数组中存储了一些结果。我猜该数组结果在对象(Promise对象)中,我需要在此对象底座上设置一个值的过滤条件。
但是对于我来说,问题是,对象的关键与响应相同,即存储。这样的数据也是
Array(5) [ {…}, {…}, {…}, {…}, {…} ]
0: Object { _isScalar: false, source: {…}, operator: {…} }
1: Object { _isScalar: false, source: {…}, operator: {…} }
2: Object { _isScalar: false, source: {…}, operator: {…} }
3: Object { _isScalar: false, source: {…}, operator: {…} }
4: Object { _isScalar: false, source: {…}, operator: {…} }
length: 5
如此,即使我迭代每个对象,我也找不到键,即我的过滤标准。
以下是与此注释相关的代码,
getSomeThing(
name: string,
dcId: any
): Promise<any[]> {
const url = `<url>`;
return this.http.get(url, { headers: this.sharedService.getHeaders() })
.toPromise()
.then(response => this.getSomeThingOneByOne(name, dcId, response.json()))
.catch(error => this.sharedService.handleError(error));
}
private getSomeThingOneByOne(name, dcId, someIds): Promise<any> {
const someObservables = [];
someIds.forEach(some => someObservables.push(this.getsomethingObservable(name, dcid, some)));
return Observable.forkJoin(someObservables)
.toPromise()
.catch(error => this.sharedService.handleError(error));
}
getsomethingObservable(
name: string,
dcId: any,
someId: any
): Observable<any> {
const url = `<url>`;
return this.http.get(url, { headers: this.sharedService.getHeaders() })
.map((response: Response) => {
const vm = response.json();
return vm;
})
.catch((error: any) => Observable.throw(this.sharedService.handleError(error)));
}
更改了函数和变量的名称。
我 作为数组,即[1,2,3,4,5]
,此功能getsomethingonebyone
呼叫getsomethingObservable
以获取与该ID相关的数据。
我想要的是回收数据后,我应该检查其中的某个值,或者在getsomethingObservable
中检查该键的值并过滤结果。 但是到期,因为我无法在数组中读取数据someObservables
在功能 getsomethingonebyone RAW中我无法在此处添加过滤条件。
在这里需要帮助,因为它需要了解我所缺乏的诺言,观察,角度和打字稿的知识。
I am not into javascript and angular, currently working on some UI task and has workable/little knowledge of javascript
what i want, base on a key field filter out the objects.
currently what code is doing, hitting a api, which is storing some result in an array. this array result are in object (promise object) i guess, and i need to set out a filter condition on this object base on some value.
but for me issue is, object does not have key same as response, it store. data like this
Array(5) [ {…}, {…}, {…}, {…}, {…} ]
0: Object { _isScalar: false, source: {…}, operator: {…} }
1: Object { _isScalar: false, source: {…}, operator: {…} }
2: Object { _isScalar: false, source: {…}, operator: {…} }
3: Object { _isScalar: false, source: {…}, operator: {…} }
4: Object { _isScalar: false, source: {…}, operator: {…} }
length: 5
so even if i iterate through each object i cant find the key which is my filter criteria.
below is code related to this
getSomeThing(
name: string,
dcId: any
): Promise<any[]> {
const url = `<url>`;
return this.http.get(url, { headers: this.sharedService.getHeaders() })
.toPromise()
.then(response => this.getSomeThingOneByOne(name, dcId, response.json()))
.catch(error => this.sharedService.handleError(error));
}
private getSomeThingOneByOne(name, dcId, someIds): Promise<any> {
const someObservables = [];
someIds.forEach(some => someObservables.push(this.getsomethingObservable(name, dcid, some)));
return Observable.forkJoin(someObservables)
.toPromise()
.catch(error => this.sharedService.handleError(error));
}
getsomethingObservable(
name: string,
dcId: any,
someId: any
): Observable<any> {
const url = `<url>`;
return this.http.get(url, { headers: this.sharedService.getHeaders() })
.map((response: Response) => {
const vm = response.json();
return vm;
})
.catch((error: any) => Observable.throw(this.sharedService.handleError(error)));
}
note i have change the name of function and variable.,
now here, getsomeThing
call an api which return a list of ids and pass it to getSomethingOneByOne
as array ie [1,2,3,4,5]
, and this function getSomethingOneByOne
call getsomethingObservable
to get the data related to that id.
what i want is once i recied the data i should check a certain value in it or in getsomethingObservable
check the value it self for that key and filter out the result.
but due since i am not able to read the data in array someObservables
in function getSomeThingOneByOne
raw i cant add filter condition there.
need help here as it requires knowledge of promise, obserable, angular and typescript which i lack.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
刚通过@sonusindhu建议的参考而解决了这一点,然后也在这里。
我已经对
getomethingonebyone
进行了更改,如下just solved this by taking reference from @sonusindhu suggestion and taking reference from here too.
i had made changes on
getSomeThingOneByOne
as below and it worked