这个承诺有什么问题

时间:2017-08-10 19:03:13

标签: javascript jquery promise

在尝试让这两个函数以正确的顺序运行时,我无法理解我做错了什么。出于某种原因,我的模态窗口不会显示,直到长时间运行的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

任何想法我做错了什么?看了很多例子,不知道我错过了什么。 感谢

0 个答案:

没有答案