gpt4 book ai didi

javascript - 在等待 Promise 时切换 AngularJS View

转载 作者:行者123 更新时间:2023-12-03 06:34:39 24 4
gpt4 key购买 nike

我有以下代码(见下文),其中 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com