javascript - AngularJS:依赖异步请求

标签 javascript angularjs

AngularJS 新手,想知道处理三个异步请求的正确方法是什么,其中第三个请求的参数由前两个请求的响应定义。

two addresses are passed to this function
$scope.getRoutes = function(origin, destination) {

//1.A request is made to get the coordinates of the first address
dataFactory.geocode(origin)
.success(function(data) {
  $scope.originObj = data;
})
.error(function () {
});

//2.Same for the second address
dataFactory.geocode(destination)
.success(function(data) {
  $scope.destinationObj = data;
})
.error(function () {
});

//3.Finally a request for transport routes between the two sets of coordinates
dataFactory.getRoutes($scope.originObj.coordinates, $scope.destinationObj.coordinates)
.success(function(data) {
  $scope.routes = data;
})
.error(function () {
});
};

这给了我错误:TypeError:无法读取未定义的属性“坐标”

将请求嵌套在成功函数中,但是有没有更好的方法让最后一个请求等待其他两个请求?

最佳答案

您正在寻找的是链式 promise 的能力。 “一旦收到来自此的数据,请调用此”是通用格式。 Angular 利用 $q 库。您可以找到文档here .

关于javascript - AngularJS:依赖异步请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227241/

相关文章:

javascript - JavascriptExecutor的executeScript()方法的返回类型是什么?

javascript - Angular UI 路由器 : child state loaded twice when parent and child take parameter of same name in url

angularjs - 为什么我在测试 promise 内的代码时会丢失调用上下文( Angular + Jasmine )

javascript - HTML5 Canvas 非矩形部分裁剪并保存图像

javascript - 在 Android 上的音频元素中播放 blob

javascript - $http 请求后 AngularJS Bootstrap 模式不起作用

javascript - IONIC 和 angularjs : Nothing happends when using angular-ui-router in navigation component

angularjs - 如何从浏览器控制台访问和测试 AngularJS 过滤器?

javascript - 使用 angularjs 指令时 Fine Uploader 出现错误

javascript - Video mediaDevices 将 Blob 分配给 'videoRef.srcObject' 代替 'src'