Javascript angularjs-$http读取json并等待回调

Javascript angularjs-$http读取json并等待回调,javascript,json,angularjs,Javascript,Json,Angularjs,我正在尝试从json读取数据,并等待数据被提取到$scope.url.content中。所以我写代码: $scope.urls = { content:null}; $http.get('mock/plane_urls.json').success(function(thisData) { $scope.urls.content = thisData; }); 现在我正试图写一些类似回调的东西,但这不起作用。我该怎么做?或者有什么功能吗?我的想法快用完了/ 你是这个意思吗 $h

我正在尝试从json读取数据,并等待数据被提取到$scope.url.content中。所以我写代码:

$scope.urls = { content:null};
$http.get('mock/plane_urls.json').success(function(thisData) {
    $scope.urls.content = thisData;    
});
现在我正试图写一些类似回调的东西,但这不起作用。我该怎么做?或者有什么功能吗?我的想法快用完了/

你是这个意思吗

$http.get('mock/plane_urls.json').success(function(thisData) {
    $scope.urls.content = thisData;
    $scope.yourCallback();
});
$scope.yourCallback = function() {
   // your code
};
你想和我一起工作

$http
本身返回一个承诺时,您所要做的就是链接到它的返回。简单地说:

var promise=$http.get('mock/plane\u url.json')。然后(函数(thisData){
$scope.url.content=thisData;
返回“某物”;
});
//代码中的其他地方
promise.then(函数(数据){
//接收从http处理程序返回的数据
log(数据==“某物”);
});
我做了一把相当简单的小提琴

但是如果你需要不断地调用这些信息,你应该通过一个服务公开它,这样任何人都可以获取它的结果并处理它。i、 e:

service('dataService', function($http) {
  var requestPromise = $http.get('mock/plane_urls.json').then(function(d) {
    return d.data;
  });

  this.getPlanesURL = function() {
    return requestPromise;
  };
});

// and anywhere in code where you need this info
dataService.getPlanesURL().then(function(planes) {
  // do somehting with planes URL
  $scope.urls.content = planes;
});

只是一个重要的提示。我模拟的这个服务将缓存并始终返回相同的数据。如果您需要多次调用此JSON,那么您应该使用。

您编写的内容已经包含回调。请解释一下你们想要实现的目标。你们在开发工具的“网络”选项卡上看到了什么,你们有过服务器的响应吗?代码是20x吗?你只是在定义成功,回电,这意味着它不会在失败的情况下被触发。我正在尝试使用$scope.url.content中获取的数据,但每次尝试立即使用它时,它们都为null。我确信
yourCallBack
将使用返回数据的参数:)。我认为使用promise API而不是调用回调应该更好直接的。它是为这些需要而设计的。。