Javascript回调异步或同步功能噩梦

时间:2017-05-30 17:27:29

标签: javascript asynchronous callback synchronization

我仍然没有理解这里发生的事情:

var app = {
    initialize: function() {
        this.bindEvents();
},
bindEvents: function() {
  function Trial() {
      var index = 0;
      var cat = [];

     function getwidget() {
          var id = get_name_value('salesperson');
          var password = 'password';
          console.log('trigger');
          if (id !== "") {
              var request = $.get('http://someplacesomewhere.com?test=' + id + '&password=' + password);
              request.success(function (data) {
                catalogue = $.parseJSON(data);
                if (catalogue.status === "error") {
                    alert(catalogue.message);
                } else {
                    .
                    .
                    do something
                    .
                    .
                    };

                    console.log('big');
                    return true;
                }
              });
              request.error(function (data, status) {
                alert("Error connecting to API:" + status);
              });
          }
          console.log('tiny');
          return false;
      }

   this.nextwidget = function() {
          var flipflop = false;
          catindex = catindex + 1;
          flipflop = getwidget();

          console.log(flipflop);
      };

按下一个按钮,控制台输出似乎以奇怪的方式绕过。

trigger -> (from getwidget)
tiny    -> (from getwidget but the failed path..? It shouldn't of failed and pretty sure it didn't)
false   -> (in the nextwidget)
big     -> (from getwidget and success)

所以看起来它正在运行getwidget然后没有执行同步执行但异步因为它在getwidget上失败然后呈现错误但同时也正确运行getwidget ????

我认为这种方式是同步的,因此所有代码都应该等待....我真的很混淆这个回调和非回调是如何工作的我已经阅读了一些关于它的事情但我只是想要一个简单的做这个然后这样做,因为这只是一个测试代码。

由于

0 个答案:

没有答案