标签: angular-http

Angular JS在调用新的$ http之前取消$ http调用

在角度JS 1.1.5中,您可以取消之前启动的$ http调用.这两个link1和link2给出了它如何工作的一些解释.

但是我无法理解,如何在实践中使用它.我创建了plnkr来说明我想要实现的目标.

  1. 用户有一个他可以点击的链接(我们知道,用户倾向于非常热情地这样做)
  2. 如果用户单击链接,并且之前的请求尚未完成,则应取消它,并且应该发出新请求(在此示例中,还有其他方法可以忽略多次点击.原始问题是用户输入字段,其中包含ng-change - 每次用户更改值时都会发出请求 - 每个按键都会触发$ http.我正在使用链接使其更简单一些)

您可以在plnkr请求中看到并立即取消,但我希望最后一个请求成功.

我是angularjs的新手,所以我可能做错了.我已经完成了我能想象到的一切,但是没有完整的例子来表示canceler.resolve()

任何人都可以帮我这个或指导我正确的方向吗?

http angularjs angular-http

5
推荐指数
1
解决办法
5897
查看次数

如何在angularjs中设置条件$资源超时?

似乎很清楚如何设置一个全局方法来中止http请求.有点像

$scope.canceller = $q.defer();
var API = $resource('http:/foo.com', {}, {get: { 
    method:'GET',
    timeout:$scope.canceller.promise
}});

$scope.abortRequests = function() {
    $scope.canceller.resolve();
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够仅中止特定请求.我可以为我需要能够中止的请求定义单独的资源,但这非常难看.当我调用可以允许超时有条件的$ resource时,有什么方法可以传入参数或其他东西吗?也许是这样的:

var API = $resource('http:/foo.com', {}, {get: { 
    method:'GET',
    timeout:function() { if (FOO) { return $scope.canceller.promise; }}
}});
Run Code Online (Sandbox Code Playgroud)

但是如何访问FOO?

感谢您的任何见解!

angularjs angular-resource angular-http

5
推荐指数
1
解决办法
3418
查看次数

Angular $ http.get到localhost,总是在浏览器中返回404. 200

我无法在Angular 1.2.13中创建成功的get请求.

  var getProgress = function() {
      var promise = $http({method: 'GET', url: 'http://localhost:8080/project/local/some/getStatus'});

      promise.then(function(success) {
        alert(JSON.stringify(success));
      }, function(error) {
        alert(JSON.stringify(error));
      }, function(notify) {
        alert(JSON.stringify(notify));
      });
  };    
Run Code Online (Sandbox Code Playgroud)

所以我试图从我的REST Web服务接收一些JSON.为了测试该服务,我从浏览器(IE9,Firefox 27,Chrome 33)访问它可以在所有这些中正常工作.

上面的代码使用angular但总是提示我错误:

*{"data":"","status":404,"config":{"transformRequest":[null],"transformResponse":[null],"method":"GET","url":,"http://localhost:8080/project/local/some/getStatus""标题":{"接受":"application/json,text/plain,/ "}}}*

使用wireshark我检查HTTP请求和HTTP响应,从浏览器和角度返回200调用Web服务,以及所需的json对象!然而,角度提示我404.

当我从Firefox USING ANGULAR发出get请求并使用Findbugs进行调试时,在控制台中我获得了HTTP Code 200,然而Angular说404.尝试调整角度的代码无济于事,看不出有什么奇怪的.

上面的代码在IE9中正常工作!

任何建议表示赞赏.

json angularjs angular-http

5
推荐指数
1
解决办法
1万
查看次数

在下一个请求之前等待$ http promise

我正在开发一个angularJS应用程序,这是我使用这个框架的第一个网站.在我的应用程序中,我需要在for循环中进行$ http调用.在下一次迭代之前的循环中,我想等待前一次调用的响应.什么是最好和最简单的方法来做到这一点.我已经尝试过使用callBack,$ q.all(),. then在所有这些中只有最后一个请求正在通过.请帮忙.

注意:我通过$ http调用的API无法对请求进行排队.

编辑: 我已经尝试了以下两种方法,在这两种情况下,只有最后一个请求成功.你能告诉我我在这里做错了吗?

方法1:

var promiseArray=[];

for(var i=0;i<items.length;i++)
{
 var promise=services.Post(items[i]);
 promiseArray.push(promise);
}

$q.all(promiseArray).then(data)
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

方法2:

var promises = [];

for (var i = 0; i < items.length; i++) {

    var deffered = $q.defer();
    var promise = services.Post(items[i]);
    promise.success(function(data) {
        deffered.resolve(data);
    })
    promises.push(deffered);
}
Run Code Online (Sandbox Code Playgroud)

var result = $ q.all(promises);

编辑:2 服务代码:

Services.Post = function(lineItemId, submitUrl) {
    var url = (submitUrl) ? submitUrl : Services.serviceUrl;

    return $http.post(url, {
        "LineItemID": lineItemId
    }).
    success(function(data, status, headers, …
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs angular-http angular-promise

5
推荐指数
1
解决办法
1361
查看次数

Angular2.将http响应映射到具体对象实例

处理http响应的Сommon方法是这样的:

return this._http.get(url)
           .map((res: Response) => res.json());
Run Code Online (Sandbox Code Playgroud)

这提供了一个Observable<Object[]>其中Object被动态创建从JSON反序列化类型.然后你可以在*ngFor="let item of result | async"等等中使用这个结果......

我想获得一个特定的类型实例(意味着使用newoperator来调用类型的构造函数).尝试了不同的方法来实现这样的目标:

.map((res: Response) => { let obj = res.json(); return new MyObject(obj.id, obj.name);})
Run Code Online (Sandbox Code Playgroud)

但得到这个错误: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

这种方式似乎有效,但它过于复杂,可能无效:

.map((res: Response) => {
    let results = <MyObject[]>[];
    let obj = res.json();
    obj.forEach(
        function (o: any) {
            results.push(new MyObject(o.id, o.name));
        }
    );
    return results; …
Run Code Online (Sandbox Code Playgroud)

json rxjs angular-http angular

5
推荐指数
1
解决办法
2万
查看次数

Spring Boot 2 Reactor Flux API的Angular客户端

如何为Java Project Reactor反应FluxAPI 创建Angular 4客户端?下面的示例有两个API:MonoAPI; 和,FluxAPI.两者都起作用curl; 但在Angular 4(4.1.2)中,只有MonoAPI有效; 任何想法如何让Angular 4与FluxAPI 一起工作?

这是一个简单的Spring Boot 2.0.0-SNAPSHOT应用程序,它带有MonoAPI和FluxAPI:

@SpringBootApplication
@RestController
public class ReactiveServiceApplication {

    @CrossOrigin
    @GetMapping("/events/{id}")
    public Mono<Event> eventById(@PathVariable long id) {
        return Mono.just(new Event(id, LocalDate.now()));
    }

    @CrossOrigin
    @GetMapping(value = "/events", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<Event> events() {
        Flux<Event> eventFlux = Flux.fromStream(
            Stream.generate(
                ()->new Event(System.currentTimeMillis(), LocalDate.now()))
            );

        Flux<Long> durationFlux = Flux.interval(Duration.ofSeconds(1));

        return Flux.zip(eventFlux, durationFlux).map(Tuple2::getT1);
    }

    public static …
Run Code Online (Sandbox Code Playgroud)

java angular-http project-reactor rxjs5 angular

5
推荐指数
1
解决办法
2544
查看次数

将日期时间从角度$ http.get请求传递到Web API 2控制器

我有一个Web API 2控制器:

[HttpGet]
[Route("api/MyRoute/{date:datetime}")]
public IHttpActionResult Get(DateTime date)
{
    return Ok(date);
}
Run Code Online (Sandbox Code Playgroud)

和有角的$ http get调用:

$http.get("/api/MyRoute/" + new Date());
Run Code Online (Sandbox Code Playgroud)

这不起作用,我收到404错误。

404之后,我也收到此错误:

XMLHttpRequest无法加载http:// localhost:2344 / api / MyRoute / 2017-06-28T00:00:00.000Z。对预检请求的响应未通过访问控制检查:请求的资源上不存在“ Access-Control-Allow-Origin”标头。

但是,如果我将参数更改为除日期以外的任何参数,它将起作用。

我已经尝试过新的Date()。toISOString(),并且做到这一点。

那么如何将日期从Angular传递到Web API控制器?

asp.net-web-api angularjs angular-http asp.net-web-api2

5
推荐指数
1
解决办法
2265
查看次数

Angular 4如何在解析器中返回多个可观察对象

基本上如标题所述,我需要返回多个可观察值或一个结果。基本上,目标是加载并说出图书馆列表,然后根据该图书馆ID加载书籍。我不想在组件中调用服务,而是希望在页面加载之前先加载所有数据。

import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
import { UserService } from './../_services/index';

    @Injectable()
    export class LibraryResolver implements Resolve<any> {

        constructor(private _userService: UserService) {}

        resolve(route: ActivatedRouteSnapshot) {
            return this._userService.getLibraryList();
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何先加载图书馆列表,然后再加载每个图书馆的图书信息并返回到我的组件?

PS:我的服务通过ID加载了此方法

this.userService.getLibraryBooks(this.library["id"]).subscribe((response) => {
...
Run Code Online (Sandbox Code Playgroud)

angular-routing angular-http angular angular-httpclient

5
推荐指数
2
解决办法
4516
查看次数

如何在角度5中显示每个HTTP请求的微调器?

我是角度5的新手.如何编写一个通用函数来为角度为5的每个HTTP请求显示微调器.请帮我实现这个.

angular-http angular-http-interceptors angular angular-httpclient

5
推荐指数
1
解决办法
1万
查看次数

Angular 5 http.get进入BehaviorSubject以在客户端上组播数据更改

我有一个Angular 5网站,它消耗着一个宁静的WCF Web服务。Web服务又与与数据库对话的业务对象进行交互。我正在使用@ angular / common / http模块将Web服务消耗到一个可观察的对象中,然后将其呈现在网页上。到目前为止,一切都很好。

现在,我还在通过Web服务更新数据库,它也可以正常工作。

但是,这有点慢,我希望能够通过更新Web服务调用直接并同时更新Observable,这样网站就不必等待数据通过Web服务通过Web服务了。企业资源规划业务对象到数据库的速度非常慢,然后又回落到Observable对象,通过异步管道更新屏幕。

因此,我心想,为什么不只用BehaviorSubjects代替Observables?然后,我可以只使用BehaviorSubject上的“ next”方法来快速更新页面。

但是,当我尝试...

public cartons$: BehaviorSubject<ICartonTrackDetail[]>;
this.cartons$ = this.cartonService.getCartonsObservable();
Run Code Online (Sandbox Code Playgroud)

我收到此错误...

Type 'Observable<ICartonTrackDetail[]>' is not assignable to type 'BehaviorSubject<ICartonTrackDetail[]>'.
  Property '_value' is missing in type 'Observable<ICartonTrackDetail[]>'.```
Run Code Online (Sandbox Code Playgroud)

现在,该错误是有道理的,但它使我退后一步并想知道:实现目标的最佳方法是什么?

rxjs angular-http rxjs5 angular angular5

5
推荐指数
1
解决办法
1173
查看次数