安排我的 api 每 60 秒调用一次
schedule my api call for every 60 seconds
我正在编写一个简单的 angular2 网络应用程序,它每 60 秒点击一次 api。
我有一个 api 呼叫,我想安排呼叫,一切正常。
如何每 60 秒调用一次 API?
我的代码
app.componenet (calling class)
constructor(HttpWebServiceService1: HttpWebServiceService1){
HttpWebServiceService1.getHTTP()
.subscribe(//do my stuff here);}
以上呼叫我的 api 呼叫 class
import { Chart } from './myCode';
@Injectable()
export class HttpWebServiceService1 {
constructor(private http: Http) {}
getHTTP() :Observable<Chart[]> {
//hit the api and get josn string or error
return this.http.get('http://XX.XX.XX.XX/test/test').map((res:Response) => res.json()).catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
}
简单的方法就是使用setInterval
。 (see the docs)
您还可以利用 RxJS:
Observable.interval(60000)
.switchMap(() => {
// return your http call here
return HttpWebServiceService1.getHTTP()
})
以上将 return 一个 Observable,它每 60 秒使用您的服务尝试一次 http 请求,然后发出该 http 请求的结果。
您可以使用一个间隔,然后每次间隔发出时,您可以使用 switchMap 获取 http 调用的结果,然后订阅它。 @snorkpete 有一个正确的答案。如果你需要立即获取数据然后每60秒之后你可以使用concat
运算符立即获取结果然后将它切换到像这样的间隔:
public getData(){
return this.getHttpRequest().concat(
Observable.interval(60000)
.switchMap(() => this.getHttpRequest()));
}
private getHttpRequest(): Observable {
return this.http.get('http://XX.XX.XX.XX/test/test').map(res => {
return res.json();
});
}
Demo
我正在编写一个简单的 angular2 网络应用程序,它每 60 秒点击一次 api。 我有一个 api 呼叫,我想安排呼叫,一切正常。
如何每 60 秒调用一次 API?
我的代码
app.componenet (calling class)
constructor(HttpWebServiceService1: HttpWebServiceService1){
HttpWebServiceService1.getHTTP()
.subscribe(//do my stuff here);}
以上呼叫我的 api 呼叫 class
import { Chart } from './myCode';
@Injectable()
export class HttpWebServiceService1 {
constructor(private http: Http) {}
getHTTP() :Observable<Chart[]> {
//hit the api and get josn string or error
return this.http.get('http://XX.XX.XX.XX/test/test').map((res:Response) => res.json()).catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
}
简单的方法就是使用setInterval
。 (see the docs)
您还可以利用 RxJS:
Observable.interval(60000)
.switchMap(() => {
// return your http call here
return HttpWebServiceService1.getHTTP()
})
以上将 return 一个 Observable,它每 60 秒使用您的服务尝试一次 http 请求,然后发出该 http 请求的结果。
您可以使用一个间隔,然后每次间隔发出时,您可以使用 switchMap 获取 http 调用的结果,然后订阅它。 @snorkpete 有一个正确的答案。如果你需要立即获取数据然后每60秒之后你可以使用concat
运算符立即获取结果然后将它切换到像这样的间隔:
public getData(){
return this.getHttpRequest().concat(
Observable.interval(60000)
.switchMap(() => this.getHttpRequest()));
}
private getHttpRequest(): Observable {
return this.http.get('http://XX.XX.XX.XX/test/test').map(res => {
return res.json();
});
}