Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析角度上的承诺_Javascript_Angularjs_Angular Promise - Fatal编程技术网

Javascript 解析角度上的承诺

Javascript 解析角度上的承诺,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我的控制器中有一个函数,它调用服务并返回承诺 当承诺得到解决时,我需要使用从服务返回的成功数据分配scope变量。 但是没有分配scope变量,因为这是异步调用,在跳转到下一行代码之前不会解析 有没有一种方法可以让我先解决承诺,然后再执行下一行代码以避免错误 控制器代码- function getUserInfo(){ memberSerice.getDetails(userId).then(function(userdetails){ $scope.user

我的控制器中有一个函数,它调用服务并返回承诺 当承诺得到解决时,我需要使用从服务返回的成功数据分配scope变量。 但是没有分配scope变量,因为这是异步调用,在跳转到下一行代码之前不会解析 有没有一种方法可以让我先解决承诺,然后再执行下一行代码以避免错误

控制器代码-

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个服务调用依赖于此用户详细信息返回值。所有的服务电话都在里面吗?是的,有问题吗?当然,它们可以各自独立。如果你想/需要在逻辑上把它们分开的话,那么就在同一个承诺上。不,实际上我不能这样做。在跳转到下一行代码之前,有没有一种有效的方法可以让我等到承诺得到解决?