delay:对上一环节的操作整体进行延迟,只执行一次
import { from } from "rxjs"import { delay, map, tap } from "rxjs/operators"from([1, 2, 3]) .pipe( delay(1000), tap(n => console.log("已经延迟 1s", n)), map(n => n * 2), delay(1000), tap(() => console.log("又延迟了 1s")) ).subscribe(console.log)// tap 操作符不会对数据流造成影响, 它被用来执行简单的副作用, 比如输出, 但是复杂的副作用不要在这执行, 比如 Ajax
delayWhen:对上一环节的操作进行延迟,上一环节发出多少数据流,传入的回调函数就会执行多次
import { range, timer } from "rxjs"import { delayWhen } from "rxjs/operators"range(1, 10) .pipe( delayWhen(n => { console.log(n) return timer(n * 1000) }) ).subscribe(console.log)
