javascript - 使用 jQuery 延迟轮询

标签 javascript jquery jquery-deferred

我正在尝试轮询数据库以获取轮询功能有效的几列的值。但是我希望能够使用延迟来让调用轮询函数的函数知道它何时完成。使用下面的内容,我收到 a has no method 'resolve' 或 a has no method 'promise' 错误

//how I call the poll function
poll(Guids.Creation,$.Deferred);

var poll = function (guid,defer) {
    var timeOut = 3000,
    url = 'handler.ashx',
    data = {
        cmd : 4 ,guid : guid
    };    
    App.Generic.ajax(url,"GET", this, data).done(function (data) {
        var orderStatusJSON = $.parseJSON(data);
        if (orderStatusJSON.hasOwnProperty('dateFinished') && orderStatusJSON.dateFinished === '') {
            setTimeout(function(){poll(guid,defer)}, 3000);
        } else {
            if (orderStatusJSON.hasOwnProperty('output')) {
                var successRegEx = /\bsuccess\b/i, 
                errorRegEx = /\berror\\b/i;    
                if(successRegEx.test(orderStatusJSON.output)) {
                    defer.resolve(orderStatusJSON);
                } else if (errorRegEx.test(orderStatusJSON.output)) {
                    defer.resolve(orderStatusJSON);
                } else {
                    defer.resolve(orderStatusJSON); //execute statement
                }
            }
        }
    });
    return defer.promise();
};

最佳答案

$.Deferred 只是 jQuery 对象的一个​​方法。您需要构造一个 Deferred 对象才能使用它:

var deferred = new $.Deferred();

关于javascript - 使用 jQuery 延迟轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140290/

相关文章:

javascript - TypeError : (intermediate value)(. ..) 在自调用函数中未定义

javascript - 你如何改变从同一个类中渲染的 jsx block ?

javascript - 使用jquery制作动画涟漪

javascript - jQuery - .always() 回调触发得太快

javascript - 在向链上传递 promise 的同时更改数据结果?

javascript - 如何根据 javascript 值使动画持续时间动态化

javascript - 保存Web应用程序的动态图结构

javascript - 通过ajax发送数组

javascript - 在 IE 中使用 iframe 时,信号器脚本中的访问被拒绝错误

jquery - $.Deferred 与新的 $.Deferred