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

Process http get request completely before click event

本文关键字:处理 http get 请求 单击 事件      更新时间:2023-09-26

我有以下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变量中。我想要的是这些请求在我触发点击事件之前完成,如上所述。我在两个函数中都实现了承诺。但是,点击甚至先完成,然后http请求才完成。我怎样才能达到上述要求??

你需要使用承诺,像这样:

$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');
    });

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