Задать вопрос

Почему функция возвращает undefined?

Добрый день!
Есть код с 2 функциями Feed.TemplateGetAttachmentPost и Feed.TemplateWallPost.

В функции Feed.TemplateWallPost вызывается функция Feed.TemplateGetAttachmentPost, которая работает без ошибок (результат выдается при проверке), но на выходе, она выдает undefined.
Подскажите, как можно переписать код, для ухода от этой проблемы?

Feed = {
   TemplateGetAttachmentPost: function (postID) {  
       // Генерирует данные, но возвращает undefined
       $.ajax({
       /* ... */
       console.log(attachment); // данные видны
       return attachment; // отвечает undefined
       /* ... */
       })
   },

   TemplateWallPost: function (AppendTo, data) {
       /* ... */
       Feed.TemplateGetAttachmentPost(data.postID) // Генерирует данные, но возвращает undefined
       /* ... */
   }

}
  • Вопрос задан
  • 283 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Feed = {
   TemplateGetAttachmentPost: function (postID) {  
       // returned deferred object
       return $.ajax({
       /* ... */
       })
   },

   TemplateWallPost: function (AppendTo, data) {
       /* ... */
       Feed.TemplateGetAttachmentPost(data.postID)
         // success
         .done(function(data){
           console.log(data);
         })
         // error
         .fail(function(){
           console.error(arguments)
         })
       /* ... */
   }

}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
$.ajax выполняется асинхронно, и пока он получит ответ, TemplateGetAttachmentPost уже закончит выполнение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы