异步多个请求的处理
16lz
2021-03-24
讨论两种情况:
一次发送多个请求,等多个请求都返回后再处理下一步,各个请求间是独立的
Promise.all(iterable) 返回一个[],一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败
Rxjs 的 forkjoin
observers = fieldsObserver.((field) => { Observable(observer => { ..(fieldobserver)})})(...observers).(data => { obj: = {}data.((itemindex) => { obj[fieldsObserver[index].] = item})callback(obj)})
async await (ES6的新标准,把异步的转化成同步的)
let test = async () => {
try{
masterDetailFormInfo = await new Promise((resolve, reject) => {
this.formService.publicGetFormInfo(field.settings.formId).subscribe(obj => {
if(obj.success){
resolve(obj.form);
}else{
reject();
}
});
});
results = await new Promise((resolve, reject) => {
let params: any = {
formId: masterDetailFormInfo.id,
tags: [this.formInfo.data.id+'-'+ field.uid]
};
params.start = 0;
params.limit = 10000;
this.formDataService.formDataSearch(params).subscribe(obj => {
if(obj.success){
let data = this.formHelper.generateRecs(obj.results, masterDetailFormInfo);
resolve(data);
}else{
reject();
}
});
});
}catch(e){
return ;
}
}
test().then((data) => {})
一次发送多个请求,但是下一个请求都需要用上一个请求的返回值,最后只输出最后一个请求的值
Rxjs mergMap
..<>(..[]).( ((obj: ) => { (!obj.){ Observable(observer => observer.({:}))} req = HttpRequest(obj.formData{ :HttpHeaders({: obj.opToken}) })..(req).(((event: HttpEvent<{}>) => { if(!event.body['success']){ return new Observable(observer => observer.next({'success':false})); } const params = new FormData(); params.append('fileKey', event.body['fileKey']); params.append('formId', this.formInfo.id); params.append('fieldId', this.fileField['uid']); //send fileKey to backend return this.http.post(this.globalConst.urls['formUploadFile'], params); } { Observable()} })) })).((obj: ) => { (obj[]){}{}})
async await (ES6的新标准,把异步的转化成同步的)
©著作权归作者所有:来自51CTO博客作者csboyty的原创作品,如需转载,请注明出处,否则将追究法律责任更多相关文章
- Python开发技巧:scrapy-redis爬虫如何发送POST请求
- 一、简单学习Ajax的GET & POST请求
- scrapy-redis爬虫如何发送POST请求
- php如何用get方式写一个简单的API接口并返回Json
- Nginx架构详解(二):nginx反向代理配置
- Spring Cloud 2.x之SpringBoot配置Cors解决跨域请求
- Influxdb中Select查询请求结果涉及到的一些数据结构
- 大规模分布式系统资源管理(一)
- 这些PHP考点虽然简单基础,但是很重点