Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<html ng-app="app">
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
  </head>
  <body ng-controller="Ctrl">
    <input type="text" ng-model="text"></input>
    <div id="console"></div>
    <script>
      var app = angular.module('app', []);
      app.controller('Ctrl', ["$scope", function ($scope) {
        var queue = [];
        localStorage.setItem("lock", "zero message")
        $scope.$watch('text', function (newValue, oldValue) {
          queue.push("nV: " + newValue);
          waitfor(getLock, "zero message", 50, 0, "sender", function () {
            if (queue !== []) {
              localStorage.setItem("messages", queue[0]);
              localStorage.setItem("lock", "one message");
              queue.shift()
            } 
          })
        }, false)
      }])
      
      function getLock() {
        return localStorage.getItem("lock")
      }
      
      function waitfor(test, expectedValue, msec, count, source, callback) {
        // Check if condition met. If not, re-check later (msec).
        while (test() !== expectedValue) {
          count++;
          setTimeout(function() {
            waitfor(test, expectedValue, msec, count, source, callback);
          }, msec);
        return;
        }
        // Condition finally met. callback() can be executed.
        // debug(source + ': ' + test() + ', expected: ' + expectedValue + ', ' + count + ' loops.');
        callback();
      }
            
      function debug(msg) {
        document.getElementById("console").innerHTML += msg + "<br/>";
      }
    </script>
  </body>
</html>
Output 300px

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

Dismiss x
public
Bin info
anonymouspro
0viewers