它确实显示您的信息流不正确。您只需不能作出“第一个”AJAX请求,直到第二个完成并分配了ID。
在本质上,你只需要的是等待被提交标签本地列表:
var tags = [];
和办法标签添加到列表:
// Add a new tag to the queue
function makeTag() {
tags.push(...);
}
中,你可以立即执行任何不依赖于id的值的代码。
一段时间后,某些事件会导致此信息的“提交”。你需要获得一个ID:
function generateID() {
return $.ajax(...);
}
,你需要一个函数来处理该ID和实际提交数据到数据库中,在这种情况下,使每个标签的AJAX调用:
function commitOneTag(id, tag) {
return $.ajax(...);
}
function commitTags(id) {
return (function loop() {
var tag = tags.shift();
if (tag) {
return commitOneTag(id, tag).then(loop);
}
})();
}
,然后一个办法链一起:
makeTag();
makeTag();
generateID().then(commitTags).done(function() {
// processing will continue here once the entire
// AJAX chain has been completed
});
这是使用.then,让承诺的“链接”。