我有以下代码:
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等待返回的承诺。
答案 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);
});