2014-01-22 4 views
0

나는 모든 작업에 반환 할 공장이있는 경우 :반환 결과

App.factory('Task', function(TaskResource) { 
    return { 
    all: function() { 
     TaskResource.query().then(function(results) { 
     return results; 
     } 
    } 
    }; 
}); 

을하고 나는 "TasksController"에서 사용하려고 :

App.controller('TasksController', function('Task') { 
    $scope.tasks = Task.all(); 
}); 

내가 얻을 'undefined'의 결과입니다. 결과를 팩토리 자체에 기록하면 올바르게 반환됩니다. 누군가 이런 일이 일어나는 이유를 이해하도록 도와 줄 수 있습니까? 감사.

답변

1

TaskResource.query()입니다. 약속에 대한 .then이 일정 시간 후에 반환됩니다. 즉, all 함수는 즉시 반환하고 undefined을 반환합니다. 약속 시간이 지나면 완료되고 아무도 얻지 못한 결과가 반환됩니다! 그것이 함수에서 반환 된 undefined을 보는 이유입니다.

+0

설명해 주셔서 감사합니다. 약속의 결과를 되돌릴 수 있도록 어떻게 수정할 수 있는지 알고 있습니까? – sturoid

+0

반환 값은 약속에 따라 다르므로'all' 함수의 결과로 약속을 반환해야합니다. 'TaskResource.query()'가 성공하면 약속을 반환하거나 새로운 약속을 반환 할 수 있습니다. – RaviH