Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="rxjs explicit shake 25NOV17c">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>bufferCount</title>
  <script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-beta.3/dist/global/Rx.umd.js"></script>
</head>
    <body>
        <div>RESULTS<hr /></div>
        <div style="font-family: monospace" id="divResults"></div>
    </body>
</html>
 
function test2() {
  const subMouseMove = new Rx.Subject<number>();
  const obLeft = subMouseMove.filter(m => m < 0);
  const obRight = subMouseMove.filter(m => m >= 0);
  const get_obLeftUntilRight = () => obLeft.takeUntil(obRight);
  const get_obRightUntilLeft = () => obRight.takeUntil(obLeft);
  //const get_obShake = () => Rx.Observable.race(get_obLeftUntilRight(), get_obRightUntilLeft()); 
  const obDragShakeAndDrop = Rx.Observable.concat(
    get_obLeftUntilRight().do(...getDebug("get_obShake1")),
    get_obRightUntilLeft().do(...getDebug("get_obShake2")),
  );
  var subscription = obDragShakeAndDrop.subscribe(
    x => debug('>> NEXT: ' + x),
    e => debug('>> ERROR: ' + e.message + "<div><pre>" + e.stack + "</pre></div>"),
    () => debug('>> COMPLETE<hr />')
  );
  let t = 10;
  setTimeout(() => subMouseMove.next(-1), t = t + 10);
  setTimeout(() => subMouseMove.next(-2), t = t + 10);
  setTimeout(() => subMouseMove.next(+3), t = t + 10);
  setTimeout(() => subMouseMove.next(+4), t = t + 10);
  setTimeout(() => subMouseMove.next(-5), t = t + 10);
}
function debug(s:string) {
  const divResults = document.createElement("div");
  divResults.innerHTML = s;
  document.getElementById("divResults").appendChild(divResults);
}
const getDebug = (name:string) => {
  return [
    (x: any) => debug("<div style='color:blue'>** NEXT: " + name + " = " + x + "</div>"), 
    (e: Error) => debug("<div style='color:red'>** ERROR: " + name + " = " + e.message + "</div>"), 
    () => debug("<div style='color:green'>** COMPLETE: " + name  + "</div>")
  ];
};
test2();
Output

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

Dismiss x
public
Bin info
penguin020pro
0viewers