当前位置: 首页 > 知识库问答 >
问题:

以功能评估为条件的抢先promise

艾令秋
2023-03-14

我有一个类似这样的问题:在返回函数的变量之前,我如何等待一个promise完成?

我有一个函数pass()来执行一些表单验证。作为其中的一部分,它有时会打开一个模式,用户必须在返回值之前关闭该模式,如下所示:

if ($scope.model.validation == "No") {
  $scope.modalInstance = $uibModal.open({
    animation: true,
    templateUrl: 'pleaseval.html',
    controller: 'PleaseValCtrl',
    size: 'lg'
  }).closed.then(function() {
    return true;
  });
}

注意,直到模式关闭,它才返回true

但是,我有一个基于函数计算的条件

if(pass(form))
{
//some code here
}
else{
alert("Please fill out all the required information before hitting 'Next'");
}
pass(form).then(function(result){
if(result)
{

这样做的问题是,如果将参数传递给pass(),而不需要等待模式,那么我将得到一个未定义的promise。

TypeError:无法读取未定义的属性“then”

共有1个答案

文建业
2023-03-14

由于您的编辑,它听起来像pass有时返回一个promise。供参考,在将来,pass的完整代码将会很有帮助,特别是关于它返回的内容--发布的代码实际上没有显示pass返回的内容,因为“return true”实际上并不是pass本身返回的内容。

您需要确保pass总是在每个代码路径中返回一个promise。如果模式不是必需的,并且您有一个同步返回值,则使passreturnpromise.resolve(true);-即true的值,但包装为promise,以便pass的返回值始终为thenable。这样,pass的调用者就不需要知道或关心操作是同步完成还是异步完成。

 类似资料:
  • Q.while循环条件是作为一个整体进行计算,还是在决定是否进入循环之前一次计算一个条件?

  • 问题内容: 我必须从D / B检索一组列值并将其作为条件进行检查。 例如,我将有像字符串,在d / B柱。(值是一直比较的值)。我将在代码中声明一个变量值,我应该评估这种情况。 我怎样才能做到这一点??任何帮助都受到赞赏。谢谢。 问题答案: 这是使用标准(Java 1.6+)脚本库的示例:

  • 卡拉夫 4.0.3 我有以下伪功能: C是独立的,A依赖于C 在这个例子中,捆绑包“BundleB1”导入了错误的“BundleC1”的主要版本,我们得到了“缺少需求”错误(如预期的那样)。但是,如果我登录到karaf控制台并运行“功能:列表”,我会看到C已启动,A已卸载,B已卸载。 我希望A被启动,因为它只依赖于C。如果我注释掉整个C功能,或者如果我之后运行,A将正常启动 如果我把这三个功能放在

  • 我在查询两个Oracle数据库时遇到问题。 查询是: (NULL实际上是一个参数,传递给查询,查询可能为空,所以我缩短了查询)。 在生产数据库上,它工作正常,响应为NULL。 在dev DB上,我发现了一个错误,即TRUNC不能应用于NUMBER,需要DATE(ORA-00932)。 显然,生产数据库跳过了OR之后条件中的所有内容,开发人员执行OR之后的部分。 我确实知道通过将CAST(MY_PA

  • 使用方法 性能评估模块提供了一系列用于模型性能评估的函数,这些函数在模型编译时由metrics关键字设置 性能评估函数类似与目标函数, 只不过该性能的评估结果讲不会用于训练. 可以通过字符串来使用域定义的性能评估函数 model.compile(loss='mean_squared_error', optimizer='sgd', metri

  • 使用方法 性能评估模块提供了一系列用于模型性能评估的函数,这些函数在模型编译时由metrics关键字设置 性能评估函数类似与目标函数, 只不过该性能的评估结果讲不会用于训练. 可以通过字符串来使用域定义的性能评估函数,也可以自定义一个Theano/TensorFlow函数并使用之 参数 y_true:真实标签,theano/tensorflow张量 y_pred:预测值, 与y_true形式相同的