我正在开发一个用angularjs编写的工作流引擎,在阶段更改之间,我可以配置一个验证方法来运行,工作流引擎希望这个验证函数返回一个布尔值来代替阶段更改。< / p>
如果你正在检查用户输入等,这个验证方案很棒,但是如果你需要调用服务器,由于这些调用的异步特性,工作流引擎不会等待调用的结果和进入下一阶段。
为了防止这种情况发生,我想我可以利用承诺。我提出了如下所示的验证方法,但我遇到的问题是,当异步调用完成时,我可以返回true,但它会在内部函数中返回。
我需要实现的是我需要在异步操作完成后从$ scope.validate返回true,我可以使用jquery轻松完成此操作,但我想使用angularjs和promises实现它,任何帮助都将受到赞赏:
var createPromise;
$scope.validate = function() {
createPromise = $scope.createAndGoSales();
createPromise.then(function(data) {
return true;
});
}
$scope.createAndGoSales = function () {
return customservice.createSales({
ProductChangeId: $scope.model.ProductChange.Id
}, function (response) {
});
}
答案 0 :(得分:0)
只需从validate方法返回promise,然后处理此返回的promise。