Skip to content

Rxjs

事件流

js
import { range } from "rxjs";
import { map, filter } from "rxjs/operators";
 
range(1, 200)
  .pipe(
    filter(x => x % 2 === 1),
    map(x => x + x)
  )
  .subscribe(x => console.log(x));
js
import { Subject, from } from "rxjs";
import { debounceTime, distinctUntilChanged, switchMap } from "rxjs/operators";

const searchItems = new Subject();

searchItems
    .pipe(
        debounceTime(300),
        distinctUntilChanged(),
        switchMap((val) => from(getSuggestList(val)))
    )
    .subscribe((x) => console.log(x));

const input = document.getElementById("input");

input.oninput = search;

function search(val) {
    searchItems.next(val.target.value);
}

function getSuggestList(val) {
    return new Promise((resolve) => {
        console.log(val);
        setTimeout(() => {
            resolve([
                { id: 1, name: "zhangsan" },
                { id: 2, name: "lisi" },
            ]);
        });
    });
}

lodash