如何从AngularJs的其他客户端发出$ http请求?(How to make a $http request from the rest client in AngularJs?)

编程入门 行业动态 更新时间:2024-10-14 22:15:21
如何从AngularJs的其他客户端发出$ http请求?(How to make a $http request from the rest client in AngularJs?)

当我在第一个服务中通过$ http发出请求时,有这种情况,然后我想操纵其他服务中的数据。 对于一些reassons我返回的对象是空的。 有什么建议?

.factory('widgetRestService',['$http','$log',function($http,$log){ var serviceInstance = {}; serviceInstance.getInfo = function(){ var request = $http({method: 'GET', url: '/rest/widgets/getListInfoDashboards'}) .then(function(success){ serviceInstance.widgets = success.data; $log.debug('serviceInstance.widgets SUCCESS',serviceInstance.widgets); },function(error){ $log.debug('Error ', error); $log.debug('serviceInstance.widgets ERROR',serviceInstance.widgets); }); return request; }; serviceInstance.getAllWidgets = function () { if (serviceInstance.widgets) { return serviceInstance.widgets; } else { return []; } }; return serviceInstance; }]) .factory('OtherService',['widgetRestService','$log', function(widgetRestService, $log){ widgetRestService.getInfo(); // and now I want to return widgetRestService.widgets [{things},{things},{things}] return widgetRestService.getAllWidgets(); // returns [] }])

结果:[]

Have this scenario when I make a request via $http in the first service, and then I want to manipulate the data in other service. For some reassons my returned object is empty. Any advice ?

.factory('widgetRestService',['$http','$log',function($http,$log){ var serviceInstance = {}; serviceInstance.getInfo = function(){ var request = $http({method: 'GET', url: '/rest/widgets/getListInfoDashboards'}) .then(function(success){ serviceInstance.widgets = success.data; $log.debug('serviceInstance.widgets SUCCESS',serviceInstance.widgets); },function(error){ $log.debug('Error ', error); $log.debug('serviceInstance.widgets ERROR',serviceInstance.widgets); }); return request; }; serviceInstance.getAllWidgets = function () { if (serviceInstance.widgets) { return serviceInstance.widgets; } else { return []; } }; return serviceInstance; }]) .factory('OtherService',['widgetRestService','$log', function(widgetRestService, $log){ widgetRestService.getInfo(); // and now I want to return widgetRestService.widgets [{things},{things},{things}] return widgetRestService.getAllWidgets(); // returns [] }])

Result: [ ]

最满意答案

在尝试访问它返回的数据之前,您必须等待您的HTTP请求完成。 您可以通过访问getAllWidgets返回的Promise中的getInfo来完成此getInfo 。

.factory('OtherService', ['widgetRestService','$log', function(widgetRestService, $log) { return widgetRestService.getInfo().then(function () { return widgetRestService.getAllWidgets(); }); }])

OtherService某处使用其他服务:

OtherService.then(function (widgets) { // do something with `widgets`... });

You must wait for your HTTP request to complete before trying to access the data that it returns. You can do this by accessing getAllWidgets within a then attached to the Promise returned by getInfo.

.factory('OtherService', ['widgetRestService','$log', function(widgetRestService, $log) { return widgetRestService.getInfo().then(function () { return widgetRestService.getAllWidgets(); }); }])

Consume OtherService somewhere:

OtherService.then(function (widgets) { // do something with `widgets`... });

更多推荐

本文发布于:2023-07-07 21:28:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1068443.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:客户端   http   AngularJs   client   rest

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!