Return interdependent async promises in $routeProvider resolve

人走茶凉 提交于 2019-11-29 10:05:45

You should be using chaining promise and $q service to solve your problem .Just use the below sample code it should work

 myApp.factory('Resolver', ['$http','$q', function ($http,$q) {
              return function () {
                  var deferred = $q.defer();

                  $http({ url: '/someurl', method: "GET" }).then(function (data) {
                      return $http({ url: '/someurl', method: "GET" })
                  }).then(function (data) {
                      return $http({ url: '/someanotherurl', method: "GET" })
                  }).then(function (data) {
                      deferred.resolve(data);
                  });
                  return deferred.promise;

              }
          }]);

This works for me:

            resolve : {
                message: function($q, $route, Restangular) {

                    var msgId = $route.current.params.msgId;
                    var deferred = $q.defer();

                    Restangular.one('message', msgId).get().then(function(message) {
                        Restangular.one('file', message.audioFile.id).get().then(function (blob) {
                            message.blob = blob;
                            deferred.resolve(message);
                        });
                    });
                    return deferred.promise;
                } 
            }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!