Javascript 如何在特定时间使用rxjs发出请求?

Javascript 如何在特定时间使用rxjs发出请求?,javascript,angular,rxjs,rxjs6,Javascript,Angular,Rxjs,Rxjs6,我需要在某个时间(上午8点、上午12点、下午4点)每天提出三次请求。 实现这一点的最佳方法是什么?您应该研究RxJS中的asyncScheduler,它使用setInterval进行基于时间的操作 请参阅此链接: 理想情况下,cron作业最好是在服务器端处理需要在不同时间执行的功能,这可能也值得一看。这感觉有点像是对JS任务的奇怪要求,我认为您应该考虑为此创建cron任务。但为了举例说明,以下是您如何做到这一点: import { of, Observable, timer, EMPTY } f

我需要在某个时间(上午8点、上午12点、下午4点)每天提出三次请求。
实现这一点的最佳方法是什么?

您应该研究RxJS中的asyncScheduler,它使用setInterval进行基于时间的操作

请参阅此链接:


理想情况下,cron作业最好是在服务器端处理需要在不同时间执行的功能,这可能也值得一看。

这感觉有点像是对JS任务的奇怪要求,我认为您应该考虑为此创建cron任务。但为了举例说明,以下是您如何做到这一点:

import { of, Observable, timer, EMPTY } from "rxjs";
import { map, filter, timestamp, switchMap } from "rxjs/operators";

type Hour = number;
type Minutes = number;

const atTimes = (times: [Hour, Minutes][]): Observable<[Hour, Minutes]> =>
  timer(0, 1000 * 60).pipe(
    switchMap(() => {
      const date: Date = new Date();
      const [currentHour, currentMinutes] = [
        date.getHours(),
        date.getMinutes()
      ];

      const time = times.find(
        ([hour, minutes]) => hour === currentHour && minutes === currentMinutes
      );

      if (!time) {
        return EMPTY;
      }

      return of(time);
    })
  );


atTimes([[11,48]]).subscribe(x => console.log(x));
从“rxjs”导入{of,Observable,timer,EMPTY};
从“rxjs/operators”导入{map,filter,timestamp,switchMap};
类型小时=数量;
类型分钟=数字;
常数时间=(时间:[小时,分钟][]):可观察=>
计时器(0,1000*60)。管道(
开关映射(()=>{
持续日期:日期=新日期();
常数[当前小时,当前分钟]=[
date.getHours(),
date.getMinutes()
];
const time=times.find(
([hour,minutes])=>hour===currentHour&&minutes===currentMinutes
);
如果(!时间){
返回空;
}
返回(时间);
})
);
atTimes([[11,48]]).subscribe(x=>console.log(x));
现场演示:

PS:我假设更新不需要在新的一分钟开始时立即触发。如果是这种情况,那么计时器应该每秒滴答响一次,并且您应该在当前的小时/分钟上使用distinctUntilChanged来等待它们的差异