在尝试让这两个函数以正确的顺序运行时,我无法理解我做错了什么。出于某种原因,我的模态窗口不会显示,直到长时间运行的ajax调用完成。我经历了一些其他帖子,谈论使用诺言而不是阻止它直到它返回。 它变成了房子火。
function modalShow() { //all it is doing is showing a div...
var deferred = $.Deferred();
var show = function () {
if (!$("#myModal").is(":visible"))
{
console.log("showing modal");
$("#myModal").show();
setTimeout(show,500);
} else {
console.log("marking deferred");
deferred.resolve(true);
}
}
show();
return deferred.promise();
}
function saveData(id) {
var promise = modalShow();
promise.then(function () {
console.log("continuing");
'super long ajax call
});
setTimeout(saveData(id),500);
}
我最后得到的是第一个没有任何类型的模态弹出窗口,即使我自己运行showModal()并且工作正常并且是一个永无止境的循环
marking deferred
continuing
marking deferred
continuing
marking deferred
continuing
marking deferred
continuing
marking deferred
任何想法我做错了什么?看了很多例子,不知道我错过了什么。 感谢