javascript - 在等待 Promise 时切换 AngularJS View

标签 javascript angularjs http view promise

我有以下代码(见下文),其中 MyCtrl1 是应用程序根据 URL 路由到的 View 的 Controller 。 Controller 调用模型服务中的函数,该函数从 http 请求返回 promise 。该模型应该根据对 Controller 的响应和返回 promise 在另一个服务 responseService 中记录一些内容。如果 http 响应需要一段时间,我需要用户能够通过 URL 切换 View ,并且模型仍然可以处理请求,直到完成为止。这是我的问题:

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

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

谢谢!

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中的对象/函数只有在没有被引用的情况下才会被删除。当您调用时:

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

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

关于javascript - 在等待 Promise 时切换 AngularJS View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38284205/

相关文章:

javascript - 我可以在 Google Apps 脚本库中使用 Class 对象吗?

javascript - Openlayers 3,将特征数组应用于 getId() 中的矢量结果不是函数

mysql - 如果日期列和字符串 "-"为 null 时返回日期,并且仍然作为日期而不是字符串传递给前面

google-chrome - 在 chrome 中防止 ERR_BLOCKED_BY_XSS_AUDITOR

javascript - 如何将选中的复选框值推送到数组中?

javascript - 使用 Jquery 根据复选框选择更高效地添加和删除类

javascript - AngularJS - 使用 ui-router 时, View 在重新出现之前不会被清理

javascript - 如何使 Controller 触发指令中的函数( Controller 采取指令)

php - 不使用 CURL 发送 GET 请求

http - 为用户与其他实体交互构建 URL 的 RESTful 方式是什么?