我有这两个函数,这是一个代码示例
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>和等待。
我已经尝试了但它没有用,实际上我不知道如何使用它们,我在这里搜索并尝试了现有的解决方案,但它也不顺利,我总是的未定义
任何人都可以帮助我吗?
答案 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
}
})