2014-01-15 3 views
0

Я пытаюсь опросить базу данных для значений нескольких столбцов, функция опроса работает. Однако я хотел бы иметь возможность использовать отложенную функцию, чтобы функция, вызывающая функцию опроса, знать, когда она будет завершена. Используя то, что я ниже я получаю либо не имеет никакого метода «решительности» или не имеет методы «обещания» ошибкаопрос с jQuery отложен

//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

является $ .Deferred переменной набор на экземпляр объекта, который имеет методы «рассосется» и «обещание»? – sjkm

+0

Я вижу, что вы имеете в виду, мне нужно $ .Deferred() not $ .Deferred – Timigen

ответ

2

$.Deferred просто метод объекта JQuery. Вы должны построить Отложенный объект, чтобы использовать его:

var deferred = new $.Deferred(); 
+0

'new' не является обязательным. –

Смежные вопросы