gpt4 book ai didi

javascript - Angular 2 回调

转载 作者:行者123 更新时间:2023-11-28 05:56:17 25 4
gpt4 key购买 nike

我创建了一个从 api 获取一些数据的服务,这是代码

getChallenges(): Observable<IChallenge[]> {
if (this._challengeUrl != null) {
return this.http.get(this._challengeUrl)
.map((res:Response) => <IChallenge[]>res.json())
.do(data => console.log('data: ' + JSON.stringify(data)))
.catch(this.handleError);
} else {
//;
}
}

我在组件内部订阅了我想要使用 ngOnInit 内部服务的内容,并且一切都运行良好。

this._challengeService.getChallenges()
.subscribe(challenges => this.challenges = challenges,
error => this.errorMessage = <any>error);

但现在我需要对数据使用过滤器,该过滤器应在 ngInit 完成获取数据后运行。这是过滤器:

filterByLvl(lvl){
this.challenges.filter((obj)=> obj.level == lvl);
}

我的问题是,当我尝试将函数放在订阅代码之后时,我不断得到一个空数组,因为 ngOnInit 首先运行这个函数,然后获取数据。我怎样才能扭转这个?我需要获取数据然后运行这个函数。那么关于如何做到这一点有什么想法吗?谢谢

最佳答案

我还没有尝试过(在工作中无法访问 angular2 :-( ),但是您可以在 subscribe 中的 lambda 函数中使用多个语句。

this._challengeService.getChallenges()
.subscribe(challenges =>
{
this.challenges = challenges;
filterByLvl(expert_level);
},
error => this.errorMessage = <any>error
);

关于javascript - Angular 2 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37648351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com