-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
122 lines (104 loc) · 2.83 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import './style.css';
import {
of,
map,
Observable,
filter,
fromEvent,
debounceTime,
EMPTY,
} from 'rxjs';
import axios from 'axios';
import { catchError } from 'rxjs/operators';
// Open the console in the bottom right to see results.
// const controller = new AbortController();
// const dataApiObservable = new Observable((subscriber) => {
// axios
// .get('https://random-data-api.com/api/name/random_name', {
// signal: controller.signal,
// })
// .then((response) => subscriber.next(response.data.first_name));
// return () => controller.abort();
// });
// dataApiObservable.subscribe((value) => console.log('1 subscriber: ', value));
// dataApiObservable.subscribe((value) => console.log('2 subscriber: ', value));
// dataApiObservable.subscribe((value) => console.log('3 subscriber: ', value));
// const rxjsButton = document.querySelector('button#rxjs_test_button');
// console.log(rxjsButton.tagName);
// const buttonClickObservable = new Observable<MouseEvent>((subscriber) => {
// rxjsButton.addEventListener('click', (event) => {
// subscriber.next(event);
// });
// });
// buttonClickObservable.subscribe((event) =>
// console.log('Subscriber 1: ', event.x)
// );
// buttonClickObservable.subscribe((event) =>
// console.log('Subscriber 2: ', event.x)
// );
interface NewsItem {
category: 'Business' | 'Sports';
content: string;
}
// const newsFeed = new Observable<NewsItem>((subscriber) => {
// setTimeout(
// () =>
// subscriber.next({
// category: 'Business',
// content: 'A',
// }),
// 1 * 1000
// );
// setTimeout(
// () =>
// subscriber.next({
// category: 'Sports',
// content: 'B',
// }),
// 2 * 1000
// );
// setTimeout(
// () =>
// subscriber.next({
// category: 'Business',
// content: 'C',
// }),
// 3 * 1000
// );
// setTimeout(
// () =>
// subscriber.next({
// category: 'Sports',
// content: 'EE',
// }),
// 4 * 1000
// );
// setTimeout(
// () =>
// subscriber.next({
// category: 'Business',
// content: 'FF',
// }),
// 5 * 1000
// );
// });
// newsFeed
// .pipe(filter((item) => item.category === 'Sports'))
// .subscribe((value) => console.log(value));
const sliderInput = document.querySelector('input#volume');
fromEvent(sliderInput, 'input')
.pipe(
debounceTime(100),
map((event) => event.target['value'])
)
.subscribe((value) => console.log(value));
const failingHttpRequest = new Observable((subscriber) => {
setTimeout(() => {
subscriber.error(new Error('Timeout'));
}, 3 * 1000);
});
console.log('App started');
failingHttpRequest.pipe(catchError((error) => EMPTY)).subscribe({
next: (value) => console.log(value),
complete: () => console.log('Completed'),
});