Я пытаюсь применить модульный шаблон JS в своем коде, но мне трудно выполнять обещания. Я привык к обещаниям в 1 строке, используя «then», но теперь у меня есть отдельные функции, и каждый из них вызывает сервер и возвращает значение другой функции, я не знаю, как это сделать. Я смущен, как я могу использовать сделано & решить в то же время.Использование обещаний с модульным JS
Вот мой код ниже:
//I want to call a function, makeLinksObject(), which will call the another function that calls the server
var formattedObject = makeLinksObject();
formattedObject.done(function (renderedObject) {
render(renderObject);
})
function makeLinksObject() {
//here I want to call another function that will call the server
var dfd = getLastTimeUpdated();
var linksArray = [];
var linksObject = {};
//get site updated date
dfd.done(function (dateUpdated) {
$.each(links, function (index, value) {
var linkObject = {};
obj.Title = value.Title.toLowerCase();
linksArray.push(obj);
});
linksObject = {
lblcallerId: "some value here"
links: linksArray
}
}); // end done
return dfd.resolve(linksObject);
}
function getLastTimeUpdated() {
var modificationUrl = "serverurl"
dfd = $.ajax({
url: modificationUrl,
method: "GET",
headers: {
"accept": "application/json;odata=verbose"
}
});
dfd.done(function(data){
dfd.resolve(data.d.LastItemModified);
})
return dfd.promise();
}
Как вернуть значение из сервера от функции 3, для использования в функции 2, а результат функции 2, для использования в функции 1, то Я могу нарисовать свой html в функции 1.
В настоящее время у меня есть ошибка во второй функции, и она не распознает мой отложенный объект.
Я думал о написании кода, который тогда был бы вложен, но я хочу использовать модульный код, чтобы сделать мой код организованным. Любая помощь будет оценена по достоинству.
эти JQuery обещания, которые не обещают обещания/A + ... независимо, вы, кажется, не понимают, как JQuery обещания работают ... вы назначаете $ .Deferred() в dfd, затем следующую строку, вы назначаете что-то еще ... ergo, первое назначение бессмысленно ... далее ... .done в jQuery Обещающая земля - это своего рода например ... то есть, что обещание было разрешено ... но вы пытаетесь разрешить его снова, используя dfd.resolve .. Я думаю, что я сказал все это раньше, а затем вы удалили вопрос! –
'$ .Deferred()' не требуется. '$ .ajax()' возвращает объект обещания jQuery. Каков ожидаемый порядок вызовов функций? – guest271314
@JaromandaX, спасибо за ваш комментарий. Я удалил первое объявление из моего кода для отложенного. Я знаю, что это действие действует тогда, но сделано, указывает успех на отдельной функции, но затем дает успех как один из его аргументов. Тем не менее, я не могу обойти все это с помощью нескольких функций, таких как мой случай – Jacky