You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			23 lines
		
	
	
		
			670 B
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			23 lines
		
	
	
		
			670 B
		
	
	
	
		
			TypeScript
		
	
| 
								 
											4 years ago
										 
									 | 
							
								let lastTime = Date.now();
							 | 
						||
| 
								 | 
							
								const interval = 10 * 1000;
							 | 
						||
| 
								 | 
							
								let timeTravelListener: (() => void) | undefined;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function checkTime() {
							 | 
						||
| 
								 | 
							
								  const currentTime = Date.now();
							 | 
						||
| 
								 | 
							
								  if (currentTime > lastTime + interval * 2) {
							 | 
						||
| 
								 | 
							
								    if (!timeTravelListener) {
							 | 
						||
| 
								 | 
							
								      throw new Error('timeTravelListener should have been set in initWallClockListener');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    timeTravelListener();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  lastTime = currentTime;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export const initWallClockListener = (onTimeTravelDetectedListener: () => void) => {
							 | 
						||
| 
								 | 
							
								  if (timeTravelListener) {
							 | 
						||
| 
								 | 
							
								    throw new Error('Wall clock listener already init');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  timeTravelListener = onTimeTravelDetectedListener;
							 | 
						||
| 
								 | 
							
								  global.setInterval(checkTime, interval);
							 | 
						||
| 
								 | 
							
								};
							 |