Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-alpha.8/dist/global/Rx.js"></script>
  <meta name="description" content="Always show the lastest value with switchMap">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
    body {
      font-family: sans-serif;
    }
  </style>
</head>
<body>
  <h2>Without <code>flatMapLatest</code></h2>
  <input id="keyword-without">
  <p id="result-without">(type fast!)</p>
  <h2>With <code>flatMapLatest</code></h2>
  <input id="keyword-with">
  <p id="result-with">(type fast!)</p>
</body>
</html>
 
function search(keyword) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Result of ' + keyword);
    }, Math.random() * 1000);
  });
}
function withoutSwitchMap() {
  const keyword = document.getElementById('keyword-without');
  const result = document.getElementById('result-without');
  keyword.addEventListener('keyup', e => {
    const value = e.target.value;
    search(value)
      .then(data => result.textContent = data);
  });
}
function withSwitchMap() {
  const keyword = document.getElementById('keyword-with');
  const result = document.getElementById('result-with');
  const keyword$ = Rx.Observable.fromEvent(keyword, 'keyup')
    .map(e => e.target.value);
  keyword$
    .switchMap(search)
    .subscribe(data => result.textContent = data);
}
withoutSwitchMap();
withSwitchMap();
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
shuheipro
0viewers