refresh.js 1.2 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import e from"../../core/Collection.js";import"../../core/has.js";import"../../core/Error.js";import"../../core/Logger.js";import"../../core/accessorSupport/watch.js";import{autorun as r}from"../../core/accessorSupport/trackingUtils.js";const t=new e,o=new WeakMap;function n(e){c(e)&&t.push(e)}function s(e){c(e)&&t.includes(e)&&t.remove(e)}function c(e){return null!=e&&"object"==typeof e&&"refreshInterval"in e&&"refresh"in e}function i(e,r){return Number.isFinite(e)&&Number.isFinite(r)?r<=0?e:i(r,e%r):0}let f=0,a=0;function l(){const e=Date.now();for(const r of t)if(r.refreshInterval){e-(o.get(r)??0)+5>=6e4*r.refreshInterval&&(o.set(r,e),r.refresh(e))}}r((()=>{const e=Date.now();let r=0;for(const n of t)r=i(Math.round(6e4*n.refreshInterval),r),n.refreshInterval?o.get(n)||o.set(n,e):o.delete(n);if(r!==a){if(a=r,clearInterval(f),0===a)return void(f=0);f=setInterval(l,a)}}));const u={get hasRefreshTimer(){return f>0},get tickInterval(){return a},forceRefresh(){l()},hasLayer:e=>c(e)&&t.includes(e),clear(){for(const e of t)o.delete(e);t.removeAll()}};export{n as registerLayer,u as test,s as unregisterLayer};