angular - Ionic/Angular2 - 在 Page.ts 和 Provider.ts 之间插入一个“中介”
问题描述
我想知道它是否可能或至少是一个方向:在我的 Home.ts 和我的 Provider.ts 之间放置一个“中介”文件。
例如:在我的 Home.ts 上,我将调用一个getJson()
方法,该方法将调用我的 MediatorgetJson()
方法,该方法将调用我的 ProvidergetJson()
方法。
原因是,认为这是一种很好的方法来处理和改进我收到的数据。
这是我在极度失败和沮丧中所尝试的...... :'(
主页.ts
ionViewDidLoad(){
let observer: any = this.mediator.get().subscribe(
(response: any) => this.get_success(response),
(response: any) => this.get_fail(response));
}
private get_success(response: any): void {
console.log('Sucess!', response)
}
private get_fail(response: any): void {
console.log('Fail!', response)
}
HomeMediator.ts
get(): Observable<any>{
let observer = this.dataService.get();
observer.subscribe(
(response: any) => this.get_success(response),
(response: any) => this.get_fail(response));
return observer;
}
get_success(res: Object){
res['key'] = "VALOR";
console.log('Ok!', res)
}
get_fail(res: any){
console.log('Nops', res)
}
提供者.ts
public get(): Observable<Object> {
return this.http.get(this.url)
.map((response: Response) => response.json());
}
JSON文件
{
"key": "value :D"
}
有什么帮助吗?我不一定需要使用 Observables .. 我仍在学习 Angular 和 Ionic ......谢谢大家的帮助!o/
解决方案
您订阅了两次,Observable
这可能是您的代码失败的原因。不应该这样做。我将提供回调的替代方案。我不会添加您的代码,Provider.ts
因为该代码很好。
调解员
// add two paramter callbacks
get(successCallback, errorCallback): void {
this.dataService.get().subscribe(
response => {
this.get_success(response);
// execute the callback function AFTER this.get_success is finished
successCallback(response);
}, error => {
this.get_fail(error);
errorCallback(error);
}
);
}
家
ionViewDidLoad() {
// pass the functions to the mediator (without () )
this.mediator.get(success, failure);
}
success(response: any) { /* some code */}
failure(error: any) { /* some code */}
推荐阅读
- php - 如何忽略将重复记录输入数据库?
- django - 在所有现有表单之后使用 django InlineModelAdmin 而不是底部时,有没有办法在顶部显示额外的表单?
- git - Git Push New Branch to Origin 压缩期间失败
- java - 使用 Java 代理获取给定 Java 类的实例数?
- c# - 等待进程启动
- python-2.7 - Python调试器知道对象创建位置
- python-3.x - 在python3中逐行读取文件时如何获取有关UnicodeDecodeError的有意义的位置信息
- python - 使用在 django 中工作的分页 notb 初始化和增加计数器
- spring-boot - 尝试使用 SPRING BOOT 从 SQL 中提取数据时出错
- mongodb - 使用 MongoDB Compass 导出聚合数据