【发布时间】:2017-12-05 11:42:59
【问题描述】:
我有一个类似的问题:How do I wait for a promise to finish before returning the variable of a function?
我有一个函数pass() 可以进行一些表单验证。作为其中的一部分,它有时会打开一个用户必须在返回值之前关闭的模式,如下所示:
if ($scope.model.validation == "No") {
$scope.modalInstance = $uibModal.open({
animation: true,
templateUrl: 'pleaseval.html',
controller: 'PleaseValCtrl',
size: 'lg'
}).closed.then(function() {
return true;
});
}
请注意,在模式关闭之前它不会return true。
但是,我有一个基于函数评估的条件
if(pass(form))
{
//some code here
}
else{
alert("Please fill out all the required information before hitting 'Next'");
}
因为它等待一个承诺(模式关闭)它返回false并触发警报,而不是等待模式关闭并实际触发true。
如何构建此代码,以便在等待模式关闭时不触发警报?
谢谢!
编辑:我应该注意我可以这样做:
pass(form).then(function(result){
if(result)
{
问题在于,如果将不需要等待模式的参数传递给pass(),我会得到一个未定义的承诺。
TypeError: 无法读取未定义的属性“then”
【问题讨论】:
-
你能解释一下你为什么在这里使用promise吗?
pass是一个长期运行的验证后端进程吗?如果您只是运行客户端验证,则坚持同步调用将起作用。
标签: javascript angularjs