Measurement.js 1.2 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.24/esri/copyright.txt for details.
  4. */
  5. import{isNone as t}from"../../core/maybe.js";function e(e){const u=e.capabilities.disjointTimerQuery;return t(u)?null:u.timestampBits()>0?new i(u):r?null:new s(u)}class i{constructor(t){this.timer=t,this.start=t.createQuery(),t.createTimestamp(this.start)}stop(t,e=50){this.end=this.timer.createQuery(),this.timer.createTimestamp(this.end),this._checkQueryResult(t,e)}_checkQueryResult(t,e){if(!this.timer.resultAvailable(this.end))return void setTimeout((()=>this._checkQueryResult(t,e)),e);if(this.timer.disjoint())return void t(null);const i=this.timer.getResult(this.start),s=this.timer.getResult(this.end);t((s-i)/1e6)}}class s{constructor(t){this.timer=t,this.query=t.createQuery(),r=!0,this.timer.beginTimeElapsed(this.query)}stop(t,e=50){this.timer.endTimeElapsed(),r=!1,this._checkQueryResult(t,e)}_checkQueryResult(t,e){const i=this.timer.resultAvailable(this.query),s=this.timer.disjoint();if(!i||s)s?t(null):setTimeout((()=>this._checkQueryResult(t,e)),e);else{const e=this.timer.getResult(this.query);t(e/1e6)}}}let r=!1;export{e as startMeasurement};