Javascript 解析角度上的承诺
我的控制器中有一个函数,它调用服务并返回承诺 当承诺得到解决时,我需要使用从服务返回的成功数据分配scope变量。 但是没有分配scope变量,因为这是异步调用,在跳转到下一行代码之前不会解析 有没有一种方法可以让我先解决承诺,然后再执行下一行代码以避免错误 控制器代码-Javascript 解析角度上的承诺,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我的控制器中有一个函数,它调用服务并返回承诺 当承诺得到解决时,我需要使用从服务返回的成功数据分配scope变量。 但是没有分配scope变量,因为这是异步调用,在跳转到下一行代码之前不会解析 有没有一种方法可以让我先解决承诺,然后再执行下一行代码以避免错误 控制器代码- function getUserInfo(){ memberSerice.getDetails(userId).then(function(userdetails){ $scope.user
function getUserInfo(){
memberSerice.getDetails(userId).then(function(userdetails){
$scope.userInfo = userdetails;
});
}
会员服务代码-
function getDetails(){
return promise;
}
在这里,呈现html时不分配范围变量。它在稍后被赋予承诺值,这破坏了用户界面
那么,在我开始执行下一行代码之前,如何等待这个承诺得到解决,并分配范围变量呢
谢谢,
Nikitha您能解析到控制器的路径中的值吗 大概是这样的:
$routeProvider
.when("/:userId", {
templateUrl: "myView.html",
controller: "myController",
resolve: {
userDetails: function(myService){
return myService.getDetails();
}
}
})
在控制器中:
app.controller("myController", function (userDetails) {
$scope.userinfo = userDetails;
});
为什么html会立即呈现?在开始行动和解决承诺之间的这段时间里,你希望它表现出什么?不,您不能阻止。这是页面上的一个复选框,用于进行服务调用,我需要将userdetails传递给该服务调用,由promise作为参数返回。但当用户向其他服务提交请求时,此参数尚未填充。所以,我想等待promise被解析,然后将分配的范围值作为参数传递给不同的服务。这个问题的解决方案是什么?把把把值传递给你的then回调中的下一个对象的代码放进去。我也试过了。但是,问题是几乎有7个服务调用依赖于此用户详细信息返回值。所有的服务电话都在里面吗?是的,有问题吗?当然,它们可以各自独立。如果你想/需要在逻辑上把它们分开的话,那么就在同一个承诺上。不,实际上我不能这样做。在跳转到下一行代码之前,有没有一种有效的方法可以让我等到承诺得到解决?