如何确保所有承诺都在javascript中解决?

时间:2014-11-30 09:38:36

标签: javascript angularjs asynchronous promise

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

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

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

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

稍后在脚本中我想确保在使用它们之前设置了两个$scope变量。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

当然你可以用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
}