我有以下代码(见下文),其中 MyCtrl1 是应用程序根据 URL 路由到的 View 的 Controller 。 Controller 调用模型服务中的函数,该函数从 http 请求返回 promise 。该模型应该根据对 Controller 的响应和返回 promise 在另一个服务 responseService 中记录一些内容。如果 http 响应需要一段时间,我需要用户能够通过 URL 切换 View ,并且模型仍然可以处理请求,直到完成为止。这是我的问题:
如果用户在http请求中间切换 View :
- MyCtrl1 消失了,即下次用户切换回 MyCtrl1 View 不会记住调用和 promise 不会被退回,对吗?
- 模型服务是否仍在处理 http 请求和更新 responseService何时收到响应?
- 如果后者是“否”,我该如何让它发挥作用?我需要用户 能够在 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/