根据switchMap的定义
在每次发射时,先前的内部 observable(您提供的函数的结果)被取消并订阅新的 observable。您可以通过短语 switch to a new observable 记住这一点。
现在,我有这样的代码
const source = timer(0, 5000).pipe(map(x=>`${x}`));
const example = source.pipe(switchMap((f) => interval(1000).pipe(map(y=>`f${f}-s${y}`))),take(20));
const subscribe = example.subscribe(val => console.log(val+' '+ new Date().getSeconds()));
结果是这样的
我的问题是,
第 25 秒 - 外部函数被调用,内部函数尚未触发,所以外部函数的最新值为 0,内部函数也默认为 0,因为它还没有值f0-s0 25
第 26 秒 - 调用内部函数,理想情况下该值应为 0,因为该函数只是第一次调用,但它是 1,即。f0-s1 26
第 30 秒 - 调用外部函数,将内部函数值重置为 0,即。f1-s0 30
为什么内部函数在第 35 秒重置,还剩 1 秒
我发现很难理解这个概念,谢谢