2016-02-24 20 views
9

Tôi có đoạn code sau đây để thực hiện một yêu cầu GET bỏ phiếu trong AngularJS 2:yêu cầu bỏ phiếu Making ở góc 2 sử dụng Quan sát

makeHtpGetRequest(){ 
      let url ="http://bento/supervisor/info"; 
      return Observable.interval(2000) 
       .map(res => res.json()) //Error here 
       .switchMap(() => this.http.get(url)); 

      /* 
    This portion works well 
    return this.http.get(url) 
       .map(res =>res.json());*/ 
     } 

nguyên cảo được đem lại cho tôi một lỗi làm cho phản ứng trong định dạng JSON (kiểm tra bình luận trong mã.

TypeError: res.json is not a function 

Đáng ngạc nhiên, nó đã làm việc trong một thời gian và tôi không chắc chắn nếu tôi thay đổi bất cứ điều gì khác, nhưng nó ngừng làm việc.

phần nhận xét trong việc mã rất tốt.

Trả lời

12

Hãy thử

return Observable.interval(2000) 
     .switchMap(() => this.http.get(url)) 
     .map(res:Response => res.json()); 
+0

Tôi đã thử cách này. Nó vẫn cho tôi lỗi. Tuy nhiên, nó sẽ bỏ phiếu trong mọi trường hợp. – user3288346

+0

Tính năng này hoạt động ở dạng chrome nhưng không hoạt động trong IE11 – Developer

5

Nó có thể là quá muộn, nhưng nó vẫn có thể giúp đỡ một ai đó.

Theo doc

Đây không phải là thiết kế riêng góc của. Ứng dụng khách Angular HTTP theo đặc tả ES2015 cho đối tượng phản hồi được hàm Fetch trả về. Đặc tả đó định nghĩa một phương thức json() phân tích cú pháp thân phản hồi thành một đối tượng JavaScript.

Tôi nghĩ chức năng json chỉ tồn tại trong phản ứng http của

tôi sẽ cố gắng

return Observable.interval(2000) 
     .switchMap(() => this.http.get(url).map(res:Response => res.json())); 
2

gì bạn có thể làm là, đừng quên dọn dẹp bạn setInveral nếu không nó sẽ chạy mãi mãi:

let myObservable = new Observable(observer => { 
    let count = 0; 
    let interval = setInterval(() => { 
      observer.next(count++); 
    },2000); 

//disposal function 
return() => { 
    clearInterval(interval); 
} 
}); 


let subscriber = myObservable.subscribe(
    val => console.log(val), 
    err => console.log(err), 
    _ => console.log('done') 
); 

subscriber.unsubscribe(); 
Các vấn đề liên quan