我正在尝试轮询数据库以获取轮询功能有效的几列的值。但是我希望能够使用延迟来让调用轮询函数的函数知道它何时完成。使用下面的内容,我收到 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/