有没有办法在转移到下面的javascript行之前强制承诺填充?

时间:2013-08-17 10:06:18

标签: angularjs

我有以下代码:

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的调用返回一个promise时,我认为这是一个问题。有没有办法我可以改变getData来返回数据而不是一个承诺,所以我可以在javascript的后续行中使用这些数据?或者有一种方法可以让我的javascript等待返回的承诺。

1 个答案:

答案 0 :(得分:4)

这是promises的目标,或者不使用像load load这样的usync技术。

将您的第二种方法调入then回调

var myPromise = entityService.getData(id);

myPromise.then(function(result) {
 ...
 $scope.modal.selected = result.data.dataId;
}, function(error) {
        alert(error.message);
    });