如何处理ajax中的延迟

时间:2016-04-14 01:03:57

标签: javascript ajax post firebase

我正在使用FireBase,一个NOSQL云数据存储。它可以在更改子(数据)时自动更新我的JavaScript。但是,我有问题。

ajax的脚本:

  var myDataRef = new Firebase('https://App_Name.firebaseio.com/session');
        myDataRef.on('child_added', function(snapshot) {
        var message = snapshot.val();
        console.log("out of ajax: user"+ message.userId );
        $.ajax({
            type: 'POST',
            url: "showProfile.php",
            data: {userId : message.userId},
            dataType: 'json',
            success: function (data) { 
                        console.log("inside ajax: user" + data.userId );
                    },
            error: function(e) {
                console.log(e);
            }
        });
      });

问题一,它没有运行Synchronous。其次,它出了故障。 inside ajax:的顺序仅取决于首先出现的顺序。

控制台中的结果:

out of ajax: user1
out of ajax: user2
out of ajax: user3
out of ajax: user4
inside ajax: user3
inside ajax: user2
inside ajax: user4
inside ajax: user1

但是,我的预期结果是:

out of ajax: user1
inside ajax: user1
out of ajax: user2
inside ajax: user2
out of ajax: user3
inside ajax: user3
out of ajax: user4
inside ajax: user4

out of ajax: user1
out of ajax: user2
out of ajax: user3
out of ajax: user4
inside ajax: user1
inside ajax: user2
inside ajax: user3
inside ajax: user4

1 个答案:

答案 0 :(得分:0)

如果您使用ECMascript 6浏览器,我会尝试Promise。如果没有,jquery的延迟方法也允许你链接ajax调用。这是一篇以An introduction to jQuery Deferred / Promise and the design pattern in general开头的好文章。你也可以在网上找到很多其他人。