loaders.gl
Version:
Framework-independent loaders for 3D graphics formats
57 lines (46 loc) • 1.43 kB
JavaScript
import { request as d3request } from 'd3-request';
export function loadFile(url, loader) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (loader.parseBinary) {
return loadBinary(url).then(function (data) {
return loader.parseBinary(data, options);
});
}
if (loader.parseText) {
return d3request(url).then(function (text) {
return loader.parseText(text, options);
});
}
return Promise.reject(new Error("Could not load ".concat(url, " using ").concat(loader.name, " loader")));
}
/**
* loads binary data
* @param {string} url
* @return {Promise} promise that resolves to the binary data
*/
/* global XMLHttpRequest */
export function loadBinary(url) {
var request = null;
var promise = new Promise(function (resolve, reject) {
request = new XMLHttpRequest();
try {
request.open('GET', url, true);
request.responseType = 'arraybuffer';
request.onload = function () {
if (request.status === 200) {
resolve(request.response);
}
reject(new Error('Could not get binary data'));
};
request.onerror = function (error) {
return reject(error);
};
request.send();
} catch (error) {
reject(error);
}
}); // Make abort() available
promise.abort = request.abort.bind(request);
return promise;
}
//# sourceMappingURL=loader.js.map