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

如何确保所有promise都在javascript中得到解决?[副本]

拓拔稳
2023-03-14

假设我有2个或更多异步调用:

    $scope.obja = {};
    $scope.objb = {};

    ref1.on('value', function (value) {
        $scope.obja= value.val();
    });

    ref2.on('value', function (value) {
        $scope.objb= value.val();
    });

在脚本的后面,我想确保在使用$box变量之前设置了它们。

此示例代码遵循angularjs中的Firebase示例。

有什么想法吗?

共有1个答案

苏昂雄
2023-03-14

你当然可以用if语句来检查?

if (($scope.obja != {}) && ($scope.objb != {})) {
    // they have been set
}

或者,如果它们有可能被设置为空对象,只需设置第二个变量即可:

var setn = 0;

// ...

ref1.on('value', function (value) {
    $scope.obja= value.val();
    setn++;
});
ref2.on('value', function (value) {
    $scope.objb= value.val();
    setn++;
});

// ...

// later in code, check if they have both been set
if (setn == 2) {
    // they have both been set
}
 类似资料:
  • 我不乐观有办法做到这一点,但我想提出这个问题。情况:我正在写一个为新手程序员量身定制的JavaScript游戏引擎。我希望主脚本界面尽可能简单和可访问。理想情况下,脚本最终会看起来像这样: 在这个场景中,第一个背景会在一秒钟内完全淡入,然后第二个背景会同步淡入。问题出在哪里?JavaScript将在第一个命令完成之前尝试执行第二个命令。 现在,正确的处理方法是使用promise。类似的东西: 这完

  • 我在一个数组上循环,并对一个api进行异步调用,返回的数据需要我与一个不同的数组合并,合并时面临的问题是,一些promise尚未解决,因此合并后产生的数组丢失数据.任何想法如何去做这件事。(我对Angular是新的)。数组循环通过至少有200个元素(我不知道数组的大小提前)我从每个元素获得id,我调用这个服务: 提前谢谢。

  • 所以我有一个情况,我有多个未知长度的promise链。我希望在处理完所有链后运行一些操作。这可能吗?这里有一个例子: 在本例中,我为promise一、promise二和promise三设置了一个,这些promise将在某个随机时间得到解决。然后,我在第一和第三段的末尾加上promise。我希望在解析所有链后解析。以下是我运行此代码时的输出: 有没有办法等待锁链解决?

  • 我正在替换一些使用jQuery延迟对象的旧代码,并且正在使用Bluebird/ES6承诺进行重写。 如果我有多个异步调用,那么在所有承诺都解决之后,我如何触发一个函数。 使用jQuery可以进行延迟: 我如何使用ES6 Promise语法重写它?

  • 问题内容: 我编写了以下node.js文件: 如您所见,我为了等待读取csv文件的两种操作而使用。我不明白为什么,但是当我运行代码时,该行未提交。 我的第二个问题是我希望的回调函数接受两个不同的变量,而每个变量都是相关promise的结果。 问题答案: 第一个问题 兑现承诺 更改: 到(添加参数) 第二个问题 在与结果为每个传递给它的承诺数组缓解。 这意味着您可以将结果提取到如下变量中: 您可以使

  • 假设我有两个返回promise的方法。 我希望完成这两种方法,然后执行一些操作。某种程度上 以什么顺序执行方法(方法1和方法2)并不重要。