1. MergeMap - 串联请求

  • 后一个请求需要前一个请求的返回结果时,需要使用串联请求。

  • 可以使用MergeMap实现, 优势是减少嵌套,优化代码;

代码如下:


import {HttpClient} from '@angular/common/http';
import {mergeMap} from 'rxjs'; @Component({
...
})
export class HttpComponent implements OnInit { constructor(private http: HttpClient) { } ngOnInit() {
// 串联请求, 前面请求会影响后面的请求,前面请求未请求到,后面请求中断;
const httpThis = this;
httpThis.http.get('/api/token').
pipe(
map(token => {
return token;
}),
mergeMap((tokenRes: any) => { // tokenRes接收的是token数据
return httpThis.http.get(`/api/user?token=${tokenRes}`)
.pipe((user) => {
return user;
});
}),
mergeMap((userRes: any) => { // userRes接收的是user数据
return httpThis.http.get(`api/data?user=${userRes}`)
.pipe((data) => {
return data;
});
}))
.subscribe((resp) => { // resp接收的是data数据
console.log('最终结果resp是最后一个mergeMap的data');
});
}
}

2. ForkJoin - 并联请求

  • 多个请求,无所谓先后顺序,等到全部请求完成后执行一定的操作时,需要使用并联请求;

  • 可以使用ForkJoin,和promise方法效果一样,好处是:可以减少嵌套,优化代码;

代码如下:


import {HttpClient} from '@angular/common/http';
import {forkJoin} from 'rxjs'; @Component({
...
}) export class HttpComponent implements OnInit { constructor(private http: HttpClient) { } ngOnInit() { // 并联请求
const post1 = this.requestData1();
const post2 = this.requestData2();
forkJoin([post1, post2])
.subscribe((data: any) => {
const postResult1 = data[0]; // '/api/post1的返回结果'
const postResult2 = data[1]; // '/api/post2的返回结果'
});
} // 并联请求1
requestData1() {
return this.http.get('/api/post1')
.pipe((data) => {
return data;
});
} // 并联请求2
requestData2() {
return this.http.get('/api/post2')
.pipe((data) => {
return data;
});
}
}

最新文章

  1. 【SQLServer】记一次数据迁移-标识重复的简单处理
  2. iOS真机测试,为Provisioning添加设备 -- based xcode6[原]
  3. java-URLConnection网络数据收取
  4. Hbase0.98.4/Hadoop2.4.1整合小结【原创】
  5. ubuntu 防火墙 添加策略 解决mysql远程访问问题
  6. Java SE 第二十二讲----接口interface
  7. duilib relativepos属性导致控件错误的bug修复
  8. 九度OJ 1385 重建二叉树
  9. .net 拉姆达 groupby(p => p.X) order by count(c.Count())
  10. Jenkins环境集成第一弹
  11. 你不知道的 flex 技巧
  12. HTTP长连接--Keep-Alive
  13. LeetCode算法题-String Compression(Java实现)
  14. AWS事故总结,几招教你规避风险
  15. Linux背背背(4)vim操作
  16. C++ explicit 关键字
  17. PHP的一个牛逼的数组排序函数array_multisort
  18. php将汉字转换为拼音和得到词语首字母(四)
  19. 可替换参数在SharePoint和VS中的使用
  20. hive连接mysql遇到的问题

热门文章

  1. winform和WPF的那点事~
  2. GitExtensions使用教程
  3. 洛谷-P1414 又是毕业季II -枚举因子
  4. 大数乘法(适合k进制)
  5. go Server示例
  6. JS千分位格式化方法,以及多种方法性能比较
  7. Docker下使用disconf:极速体验
  8. 每天学会一点点(枚举enum)
  9. 线上问题排查神器 Arthas
  10. spring aop 之链式调用