AngularJS调用回调函数

AngularJS call callback function

我想调用回调函数,但是我调用错误,获取不到数据

我试过了:

//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 包含数据,但如果我这样调用它,它是空的。

有人知道如何正确称呼它吗?

避免在基于承诺的 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;
     });
 }

并从 returned 承诺中提取数据:

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

.then 方法 return 是一个新的承诺,通过 successCallbackerrorCallback 的 return 值解决或拒绝(除非该值是一个承诺,在这种情况下,它使用 promise chaining.

在该承诺中解决的值来解决