<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.4.0/Rx.js"></script>
// 1秒毎に`"A"`、`"B"`、`"C"`、`"D"`、`"E"`を通知する Observable
const observable = Rx.Observable.interval(1000)
.take(5)
.map(index => 'ABCDE'[index]);
// 1.4秒毎に`"F"`、`"G"`、`"H"`、`"I"`、`"J"`を通知する Observable
const observable2 = Rx.Observable.interval(1400)
.take(5)
.map(index => 'FGHIJ'[index]);
// 2.2秒毎に`"K"`、`"L"`、`"M"`、`"N"`、`"O"`を通知する Observable
const observable3 = Rx.Observable.interval(2200)
.take(5)
.map(index => 'KLMNO'[index]);
// 指定した Observable(`observable`、`observable2`、`observable3`)が全て`next`通知をしたら、
// それぞれの Observable が最後に`next`通知した値を配列にまとめて`next`通知する Observable を生成する。
const combined = Rx.Observable.combineLatest(observable, observable2, observable3);
combined.subscribe(
x => console.log(x),
error => console.error(`error: ${error}`),
() => console.log('complete')
);
// 生成した Observable が最初に`next`通知をするタイミングは`observable3`が1回目(2.2秒後)の`next`通知をした時。
// それまでに以下の`next`通知がされている。
// 1. `observable`が`"A"`を`next`通知する。
// 2. `observable2`が`"F"`を`next`通知する。
// 3. `observable`が`"B"`を`next`通知する。
// 4. `observable3`が`"K"`を`next`通知する。
// このタイミングで指定した Observable が全て`next`通知をしたので、
// それぞれの Observable が最後に通知した値がまとめられた配列が`next`通知され、以下がコンソール出力される。
// => ["B", "F", "K"]
//
// これ以降は、いずれかの Observable(`observable`、`observable2`、`observable3`)が`next`通知する度に、
// それぞれの Observable が最後に通知した値を配列にまとめて`next`通知をするので、以下がコンソール出力される。
// => ["B", "G", "K"]
// => ["C", "G", "K"]
// => ["D", "G", "K"]
// => ["D", "H", "K"]
// => ["D", "H", "L"]
// => ["E", "H", "L"]
// => ["E", "I", "L"]
// => ["E", "I", "M"]
// => ["E", "J", "M"]
// => ["E", "J", "N"]
// => ["E", "J", "O"]
// => "complete"
Output
This bin was created anonymously and its free preview time has expired (learn why). — Get a free unrestricted account
Dismiss xKeyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |