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.

39 lines
876 B
JavaScript

import { defaultValue } from "../Source/Cesium.js";
import { getTimestamp } from "../Source/Cesium.js";
import { when } from "../Source/Cesium.js";
function pollToPromise(f, options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
var pollInterval = defaultValue(options.pollInterval, 1);
var timeout = defaultValue(options.timeout, 5000);
var deferred = when.defer();
var startTimestamp = getTimestamp();
var endTimestamp = startTimestamp + timeout;
function poller() {
var result = false;
try {
result = f();
} catch (e) {
deferred.reject(e);
return;
}
if (result) {
deferred.resolve();
} else if (getTimestamp() > endTimestamp) {
deferred.reject();
} else {
setTimeout(poller, pollInterval);
}
}
poller();
return deferred.promise;
}
export default pollToPromise;