poll.ts 789 B

1234567891011121314151617181920212223242526
  1. import { WalletAdapter } from './adapter';
  2. export function poll(callback: () => boolean | Promise<boolean>, interval: number, count: number) {
  3. if (count > 0) {
  4. setTimeout(async () => {
  5. const done = await callback();
  6. if (!done) poll(callback, interval, count - 1);
  7. }, interval);
  8. }
  9. }
  10. export function pollUntilReady(adapter: WalletAdapter, pollInterval: number, pollCount: number) {
  11. poll(
  12. () => {
  13. const { ready } = adapter;
  14. if (ready) {
  15. if (!adapter.emit('ready')) {
  16. console.warn(`${adapter.constructor.name} is ready but no listener was registered`);
  17. }
  18. }
  19. return ready;
  20. },
  21. pollInterval,
  22. pollCount
  23. );
  24. }