AngularJs:$ http链接

时间:2017-08-21 02:33:15

标签: javascript angularjs http

我有这两个函数,这是一个代码示例

var getRangeTime = function(numSerie){
      $http.get("data/tempsgammes.json").then(function(res){
          return $scope.time = res.data[numSerie].temps
    })}

var updateScreen = function() {
      $http.get("http://localhost:5000").then(function(response){
        $scope.numSerie = response.data.refDetail.Num_Serie
        $scope.numTeam = response.data.team
        $scope.t = getRangeTime($scope.numSerie)
        //Rest of code the code
    }

这就是我想要做的事情:

首先,我调用函数 updateScreen()来获取序列号(numSerie),然后根据 numSerie ,将使用另一个函数 getRangeTime()来获取时间,然后函数 updateScreen()将使用 getRangeTime()的结果继续执行

这里的问题是异步,我的意思是 updateSreen()应该等待 getRangeTime(),直到她返回所需的值,它是异步< / strong>和等待

我已经尝试了但它没有用,实际上我不知道如何使用它们,我在这里搜索并尝试了现有的解决方案,但它也不顺利,我总是的未定义

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

在这种情况下,您应该使用promise chain一个接一个地调用请求。

function updateScreen(){
    return $http.get("http://localhost:5000")
}

function getRangeTime(){
   return  $http.get("data/tempsgammes.json")
}

$scope.calltwoFunctions = function() {
     updateScreen()
       .then( function( response )
        {
            $scope.numSerie = response.data.refDetail.Num_Serie
            $scope.numTeam = response.data.team
            return getRangeTime();
        })
        .then(function(response){
           console.log(response.data);
        })
}

答案 1 :(得分:0)

这里有点晚了,但你也可以使用回调(我没有测试过,但它应该可以工作):

var updateScreen = function(callback) {
   $http.get("http://localhost:5000").then(function(response){
        $scope.numSerie = response.data.refDetail.Num_Serie
        $scope.numTeam = response.data.team
        $scope.t = getRangeTime($scope.numSerie)
        callback($scope.numSerie);
    }
}

updateScreen(function(numSerie) {
   $http.get("data/tempsgammes.json").then(function(res){
          return $scope.time = res.data[numSerie].temps
    }
})