Функция обратного вызова AngularJS - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу вызвать функцию обратного вызова, но не могу получить данные, потому что мой вызов неправильный.

Я пытался:

//function with callback
filterList: function(type, cb) {

 if (type == 'all') {
  var resource = infoboxApi.resource1().query();
 } else if (type == 'group') {
  var resource = infoboxApi.resource2().query();
 }

 resource.$promise.then(function(events) {
  var eventContainer = [];
  angular.forEach(events, function(event) {                  
   eventContainer.push({
    id: event.id,
    title: event.title
   })
  });
  cb(eventContainer);
 });

 return wrapSaveHandlers(resource);
 }



//call i tried
var newSources = [];
filterList('all', function(result) {
 newSources = result;
});

Я хочу, чтобы newSources содержал данные, нопусто, если я назову это так.

Кто-нибудь знает, как правильно назвать это?

1 Ответ

0 голосов
/ 07 февраля 2019

Избегайте использования обратных вызовов в API на основе обещаний.Вместо этого используйте return операторов:

 //function without callback
 filterList: function(type) {
     var resource;       
     if (type == 'all') {
         resource = infoboxApi.resource1().query();
     } else if (type == 'group') {
         resource = infoboxApi.resource2().query();
     };

     //RETURN the promise
     return resource.$promise.then(function(events) {
         var eventContainer = [];
         angular.forEach(events, function(event) {                  
             eventContainer.push({
                 id: event.id,
                 title: event.title
             })
         });
         //RETURN the data
         return eventContainer;
     });
 }

и извлеките данные из возвращенного обещания:

var newSources = [];
filterList('all').then(function(result) {
    newSources = result;
});

Метод .then возвращает новое обещание, которое разрешеноили отклонено через возвращаемое значение successCallback, errorCallback (если только это значение не является обещанием, и в этом случае оно разрешается значением, которое разрешено в этом обещании с использованием цепочки обещаний .

...