我正在尝试轮询数据库以查找轮询函数工作的几列的值。但是我希望能够使用deferred让调用轮询函数的函数知道它何时完成。使用我下面的内容,我得到一个没有方法'解决'或没有方法'承诺'错误
//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();
};
答案 0 :(得分:2)
$.Deferred
只是jQuery对象的一种方法。您需要构造一个Deferred对象来使用它:
var deferred = new $.Deferred();