Javascript 角度-服务返回值,但不返回';t app.config中的路由

Javascript 角度-服务返回值,但不返回';t app.config中的路由,javascript,angularjs,Javascript,Angularjs,我想调用一个服务,从数据库(当前是模拟数据,但它将来自数据库)检索一个用户,并在激活“profile”状态时将该用户的信息发送到ProfileController。调用了服务,但之后什么也没有发生:在函数的then()或catch()部分没有执行任何操作。我该怎么做有什么想法吗 (function() { "use strict"; angular.module("testing_app", [ "ui.router" ]) .config(function($urlR

我想调用一个服务,从数据库(当前是模拟数据,但它将来自数据库)检索一个用户,并在激活“profile”状态时将该用户的信息发送到ProfileController。调用了服务,但之后什么也没有发生:在函数的
then()
catch()
部分没有执行任何操作。我该怎么做有什么想法吗

(function() {
  "use strict";

  angular.module("testing_app", [
    "ui.router"
  ])
  .config(function($urlRouterProvider, $locationProvider, $stateProvider, $qProvider) {
    $locationProvider.html5Mode(true);

    $stateProvider
        .state("users", {
            url: "/users",
            templateUrl: "templates/users.html",
            controller: "UsersController as uc"
        })
      .state("profile", {
        url: "/user/:id",
        templateUrl: "templates/profile.html",
        controller: "ProfileController as pc",
        resolve: {
          resolvedUser: ["UsersService", "$q", "$stateParams", function(UsersService, $q, $stateParams){
            console.log($stateParams.id);
            return UsersService.findById($stateParams.id).then(function(user){
              return user;
            }).catch(function(error){
              return $q.reject(error);
            });
          }]
        }
      });
  });
})();
UsersService.js目前正在使用模拟数据,但它最终将从数据库中获取数据

(function(){
    "use strict";

    angular.module("testing_app")
        .factory("UsersService", function(){

            var Users = {};

            var userList = [
                { id: 1, name: "Richard Hendricks", email: "richard@piedpiper.com", phone: 4085550011, pokemon: { isPresent: true, name: "eevee"}, icon: { isPresent: false, name: null} },
                { id: 2, name: "Erlich Bachman", email: "erlich@aviato.com", phone: 4155552233, pokemon: { isPresent: true, name: "celebi"}, icon: { isPresent: false, name: null} },
                { id: 3, name: "Gavin Belson", email: "gavin@hooli.com", phone: 9165554455, pokemon: { isPresent: true, name: "snorlax"}, icon: { isPresent: false, name: null} }
            ];

            Users.all = function(){
                return userList;
            };

            Users.findById = function(id){
                return userList.find(function(user){
                    return user.id == id;
                });
            };

            return Users;
        });
})();

因为在服务中不使用promise,所以在UserService.findById()中不会有任何promise.then()或promise.catch()

你应该在服务中使用承诺

Users.findById = function(id){
    let deferred = this.$q.defer();    // you have to inject $q in your factory

    deferred.resolve(userList.find(function(user) {
        return user.id == id;
    }));

    return deferred.promise.
};

因为在服务中不使用promise,所以在UserService.findById()中不会有任何promise.then()或promise.catch()

你应该在服务中使用承诺

Users.findById = function(id){
    let deferred = this.$q.defer();    // you have to inject $q in your factory

    deferred.resolve(userList.find(function(user) {
        return user.id == id;
    }));

    return deferred.promise.
};

你能发布你的用户服务的详细信息吗?@Pengyy现在就检查它,返回模拟承诺而不是模拟数据。你能发布你的用户服务的详细信息吗?@Pengyy现在就检查它,返回模拟承诺而不是模拟数据。这就成功了。我应该知道的更多,因为我在过去处理过很多承诺。非常感谢。这就成功了。我应该知道的更多,因为我在过去处理过很多承诺。非常感谢你。