【发布时间】:2021-10-11 23:47:05
【问题描述】:
我正在研究 rxjs,这对我来说似乎很奇怪,这是 rxjs 文档中的一个示例,我尝试用 forkJoin 替换 combineLatest 并且它不起作用(未调用订阅者函数),我相信它应该因为我们已经用 startsWith(0) 启动了 obeservables
import { fromEvent, combineLatest, forkJoin } from "rxjs";
import { mapTo, startWith, scan, tap, map } from "rxjs/operators";
// elem refs
const redTotal = document.getElementById("red-total");
const blackTotal = document.getElementById("black-total");
const total = document.getElementById("total");
const addOneClick$ = (id) =>
fromEvent(document.getElementById(id), "click").pipe(
// map every click to 1
mapTo(1),
// keep a running total
scan((acc, curr) => acc + curr, 0),
startWith(0)
);
combineLatest(addOneClick$("red"), addOneClick$("black")).subscribe(
([red, black]) => {
redTotal.innerHTML = red;
blackTotal.innerHTML = black;
total.innerHTML = red + black;
console.log(red, black);
}
);
<!DOCTYPE html>
<html>
<head>
<title>Parcel Sandbox</title>
<meta charset="UTF-8" />
</head>
<body>
<div>
<button id="red">Red</button>
<button id="black">Black</button>
</div>
<div>Red: <span id="red-total"></span></div>
<div>Black: <span id="black-total"></span></div>
<div>Total: <span id="total"></span></div>
<script src="src/index.js">
</script>
</body>
</html>
【问题讨论】:
标签: javascript angular rxjs observable