$save().then 在 Angular 上$resource不等待服务响应

$save().then on Angular $resource doesn't wait for the service response

本文关键字:resource 等待 响应 服务 Angular save then      更新时间:2023-09-26

我有一些控制器和一个函数,用于从 REST WCF Web 服务获取一些值:

fooBar.controller('fooCtrl',
            function fooCtrl($scope, $http, $resource) {
                $scope.someOnClickEvent = function () {
                GetSomething('a','b','c');
            }
        }
);
function GetSomething($scope, $resource, a, b, c) {
    var ServiceHandle = $resource('some/addr');
    var serviceHandle = new ServiceHandle();
    serviceHandle.a = a;
    serviceHandle.b = b;
    serviceHandle.c = c;
    serviceHandle.$save().then(function (result) {
        console.log('So response should be ready');
        $scope.result = result.ValueFromService;
    });
}

据我所知$save()返回 promise 和 .then 中的函数应该在服务器返回响应后立即调用。就我而言,它被称为即时。

如果服务返回 true,我将显示一些弹出窗口,因此我需要在执行条件指令之前返回此值。

Angular 的版本是 1.4.9。

我已经分析了代码及其行为,显然我错了。也许我应该删除这个问题,但我相信它可以帮助某人理解类似的问题。

实际上,.then中的函数是在来自服务器的响应之后调用的。例如,可以使用Chrome的开发人员工具(即标签网络)进行验证。

但是,如果在调用 GetSomething 函数之后,我们想访问一个$scope.result我们就犯了一个很大的错误。 只要不执行.then中的函数,$scope.result就会被undefined。要使用从服务返回的值,我们必须在函数内部或函数调用.then函数中执行此操作。