1

我有以下代码:

getData: function (
    problemId) {
    var deferred = $q.defer();
    EntityResource.getEntities({
        action: "GetData",
        id: id
    }, function (resp) {
       deferred.resolve(resp);
    });
    return deferred.promise;
},

我在这里调用此代码:

$scope.modal.data = entityService.getData(id);

但是在我得到之后不久的另一行:

$scope.modal.selected = $scope.getId($scope.modal.data.dataId);

由于我对 getData 的调用返回了一个承诺,所以我认为这是一个问题。有没有办法可以更改 getData 以返回数据而不是承诺,以便我可以在后续的 javascript 行中使用这些数据?或者有一种方法可以让我的 javascript 等待返回的承诺。

4

1 回答 1

5

这是promises或不使用像加载承诺这样的 usync 技术的目标。

将您的第二种方法调用到then回调中

var myPromise = entityService.getData(id);

myPromise.then(function(result) {
 ...
 $scope.modal.selected = result.data.dataId;
}, function(error) {
        alert(error.message);
    });
于 2013-08-17T10:10:49.770 回答