我正在使用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
答案 0 :(得分:0)
如果您使用ECMascript 6浏览器,我会尝试Promise。如果没有,jquery的延迟方法也允许你链接ajax调用。这是一篇以An introduction to jQuery Deferred / Promise and the design pattern in general开头的好文章。你也可以在网上找到很多其他人。