-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathobservable_error_blocking.js
More file actions
42 lines (35 loc) · 1.34 KB
/
observable_error_blocking.js
File metadata and controls
42 lines (35 loc) · 1.34 KB
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
function getData(){
var beers = [
{name: "Stella", country: "Belgium", price: 9.50},
{name: "Sam Adams", country: "USA", price: 8.50},
{name: "Bud Light", country: "USA", price: 6.50},
{name: "Brooklyn Lager", country: "USA", price: 8.00},
{name: "Sapporo", country: "Japan", price: 7.50}
];
return Rx.Observable.create( observer => {
let counter = 0;
beers.forEach( beer => {
observer.next(beer);
counter++;
if (counter > Math.random()*5) {
observer.error("Beer stream error");
} else{
emulateDelayInSeconds(1);
}
}
);
observer.complete();}
);
}
function emulateDelayInSeconds(seconds)
{
var e = new Date().getTime() + (seconds * 1000);
while (new Date().getTime() <= e) {} // just keep the CPU busy
}
getData()
.map(beer => beer.name + ", " + beer.country)
.subscribe(
beer => console.log("Subscriber got " + beer),
err => console.error(err),
() => console.log("The stream is over")
);