我有一个保存函数,我需要调用另一个函数来获取修订号。并且正在进行 api 调用。因为两者本质上都是异步的。如何让一个函数等待其他函数执行
$scope.getRevision = function(callback){
Api.Product.querymyProdById({ prodId: $scope.editProdId }).$promise.then(function(result) {
if (result && result.length>=1 && result[0].effectiveDate != $scope.editProdmyDate) {
$scope.editProdRevision = result && result[0].revision +1;
callback();
} else {
$scope.editProdRevision = 100;
}
});
}
$scope.saveProd = function(){
$scope.getRevision(function(){});
Api.Product.save({
id: $scope.ProdId;
revision:$scope.editProdRevision
-some code
}
上面的代码我想确保在我得到 prodRevision 之前不会调用保存 api。
有什么建议吗?
最佳答案
既然你有 promise ,就不要搞乱回调。让您的函数实际返回一个 promise 并使用 then
来链接调用。
$scope.getRevision = function(){
return Api.Product.querymyProdById(..).$promise...;
}
$scope.saveProd = function() {
return $scope.getRevision().then(function() {
return Api.Product.save(...);
})
}
关于javascript - Angular : How to make one async function executes first after another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37721037/