是否有一种方法可以收集可观察对象的列表,以获得forkJoin
或zip
那样的累积结果,但是在完成时会有所进展?
例如,加入一个类似的http请求列表,但在访问过程中可视化进度。
答案 0 :(得分:0)
这里是您计算每个可观察项目完成时的百分比的方法。
merge
将使Obs异步运行,scan
将进行计数并发送到map
以锻炼百分比
obs=[ob1,ob2,ob3]
merge(...obs).pipe(
scan((acc,curr)=>acc+1,0),
map(count=>count/obs.length*100)
)
答案 1 :(得分:0)
另一种可能性:
$sql = "SELECT b.year_name as year, SUM(a.status=1) as total
from tbl_student as a
left join tbl_year as b on b.id_year=a.year
GROUP BY a.tbl_year
ORDER BY year ASC" ;
用法:
function get_result_and_perceptage(obs)
const counter$ = new Subject();
obs_modified_list = obs.map(item => item.pipe(finalize(
() => counter$.next(1)
))
const result$ = forkJoin(obs_modified_list).pipe(finalize(
() => counter$.complete()
));
const percent$ = counter$.asObservable().pipe(map((val)=>count *100/obs.length));
return {result$, percent$};