В основном у меня есть различные контроллеры javascript. Базовый HTML-документ Вызывает объект javascript, который вызывает другой, который вызывает вызов Ajax и возвращает объект «Отложен». Затем я вызываю .done по возврату данных и обрабатываю их. Когда я его обрабатываю, я проверяю, содержит ли данные ошибку. Я хочу, чтобы иметь возможность возвращать истину или ложь, полностью поддерживая цепочку, в базовый HTML-документ, чтобы выполнить некоторое поведение пользовательского интерфейса, но я совершенно новичок в идее отсрочки/обещания. Как видно из примера кода на последнем уровне. Я просто возвращаю def.done (AfterServerSuccess) и возвращаюсь обратно на базу, чтобы заполнить containsError. Кажется, это возвращает пустой объект «Отложенный». Я чувствую, что есть простой ответ на этот вопрос. Я пробовал разные способы, чтобы исключить логическое из готового метода, но я не могу понять это. Может кто-нибудь, пожалуйста, дайте мне несколько рекомендаций здесь?Получение возвращаемого значения из Deferred.Done
база:
var containError = `myJavascriptController.CheckItemsForErrors(dayparts, false);`
MyJavascriptController.js:
var CheckItemsForErrors = function (list, source)
{
return mySelectionController.CheckForErrors("CheckForErrors", list, source);
};
mySelectionController.js:
var CheckForErrors= function (listItems, source)
{
if (listItems.length > 1)
{
//Ajax call returns Deferred object
var def = _manager.SendDataToServer(listItems);
return def.done(AfterServerSuccess)
}
var AfterServerSuccess = function (data)
{
_.each(data, function (item)
{
if (item.Error == true)
{
return true;
}
});
return false;
};