【问题标题】:Switching AngularJS views while waiting for promise在等待承诺时切换 AngularJS 视图
【发布时间】:2016-11-12 01:24:13
【问题描述】:

我有以下代码(见下文),其中 MyCtrl1 是应用程序根据 URL 路由到的视图的控制器。控制器调用模型服务中的函数,该函数从 http 请求返回承诺。该模型应该在另一个服务 responseService 中记录一些东西,基于响应并向控制器返回承诺。如果 http 响应需要一段时间,我需要用户能够通过 URL 切换视图,并且在完成之前仍然让模型按请求工作。这是我的问题:

如果用户在 http 请求中间切换视图:

  1. MyCtrl1 消失了,即下次用户切换回 MyCtrl1 视图它不会记住调用和 承诺不会返回给它,对吗?
  2. 模型服务是否仍在处理 http 请求和更新 responseService 何时收到响应?
  3. 如果后者是“否”,我怎样才能让它工作?我需要用户 能够在 http 工作时切换视图。

谢谢!

myctrl1.controller.js:

angular.module('myApp')
    .controller('MyCtrl1', ['$scope', 'myModels', function ($scope, myModels) {

    myModels.listMyData().then(
        function(response) {
            ...
        },
        function(response) {
            ...
        }
    );
}]);

myModels.models.js:

angular.module('myApp')
    .service('myModels', ['$http', '$q', 'responseService', function($http, $q, responseService) {

    this.listMyData = function() {

        var promise;
        ...

        $http.get('http://xxx.xxx.xxx').then(
            function(response) {
               // register something in responseService
               // assign promise
            },
            function(response) {
               // register something in responseService
               // assign promise
            }
        );

        return promise;   
    }

}]);

【问题讨论】:

    标签: javascript angularjs http view promise


    【解决方案1】:

    你可以说javascript中的对象/函数只有在没有被引用的情况下才会被删除。当你打电话时:

    $http.post(...).then(callback)
    

    callback 函数现在被引用。所以它不会被删除,并且无论用户是否切换视图都会执行。 回答您的问题: 1. 是的 2. 是的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-14
      • 2020-07-19
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2019-04-29
      相关资源
      最近更新 更多