我正在使用angularjs进行存根开发。我的存根是服务器上的JSON文件。所以,我在“stub”函数中进行$ http调用以获取存根。但是由于$ http是异步的,所以whenGET始终返回空数据(它不等待http完成)。我查看了有关这一主题的当前问题。它们提供了将http调用的返回值分配给范围数据模型的方法。我想在http请求完成后返回数据。下面是代码。
stubbedOstnApp.run(['$httpBackend','$http',function($httpBackend, $http){
var tempData;
var get = function (){
return $http.get('../test/data/program-categories.json').then(function(data){
tempData = data.data;
console.log(tempData);
return tempData;
})
};
get();
console.log(tempData);
$httpBackend.whenGET('lookup/program-categories').respond(tempData);
$httpBackend.whenGET(/^views\//).passThrough();
$httpBackend.whenGET(/^\.\.\/test\/data\//).passThrough();
}]);
基本上,我希望whenGET行等到填充tempData。执行whenGET方法后,get函数内的tempData将记录在控制台中。
答案 0 :(得分:1)
您应该在为$ http.get
提供的成功回调中填充tempData以这种方式尝试:
var get = function (){
return $http.get('../test/data/program-categories.json').then(function(data){
tempData = data.data;
$httpBackend.whenGET('lookup/program-categories').respond(tempData);
console.log(tempData);
return tempData;
})
};
get();
console.log(tempData);
答案 1 :(得分:0)
为此,您应该使用promises:https://docs.angularjs.org/api/ng/service/$q
这里承诺的优秀解释:Processing $http response in service