在点击事件之前完全处理http get请求

时间:2016-11-05 20:53:14

标签: javascript jquery angularjs

我有以下javascript代码: -

$scope.fav_bill_details=function (id1,id2,bill_id) {
document.getElementById(id2).style.display="none";
$scope.getActiveBill();
document.getElementById(id1).style.display="block";
$scope.getBillDetails(bill_id);
$timeout(function(){
    var btn=angular.element(document.getElementById(bill_id));
    angular.element(document.getElementById(btn.id)).trigger('click');
    });
};

从上面可以看到上面有两个函数调用: - $scope.getActiveBill();$scope.getBillDetails(bill_id);,这两个函数都有http get请求。他们获取数据并对其进行处理并将其存储在$ scope变量中。我想要的是在触发上面的点击事件之前完成这些请求。我已经在两个函数中实现了promises。但点击甚至先完成,然后完成http请求。我怎样才能达到上述要求?

1 个答案:

答案 0 :(得分:1)

您需要使用承诺,例如:

$scope.fav_bill_details=function (id1,id2,bill_id) {
    document.getElementById(id2).style.display="none";
    $scope.getActiveBill().then(function() {
        document.getElementById(id1).style.display="block";
        return $scope.getBillDetails(bill_id);
    }).then(function () {
        var btn=angular.element(document.getElementById(bill_id));                   
        angular.element(document.getElementById(btn.id)).trigger('click');
    });

在您的示例中,您调用异步函数但不等待它们完成,这解决了它。