UNPKG

wavesurfer.js

Version:

Interactive navigable audio visualization using Web Audio and Canvas

52 lines (48 loc) 1.48 kB
import Observer from './observer'; /** * Perform an ajax request * * @param {Options} options Description * * @returns {Object} Observer instance */ export default function ajax(options) { const instance = new Observer(); const xhr = new XMLHttpRequest(); let fired100 = false; xhr.open(options.method || 'GET', options.url, true); xhr.responseType = options.responseType || 'json'; if (options.xhr) { if (options.xhr.requestHeaders) { // add custom request headers options.xhr.requestHeaders.forEach(header => { xhr.setRequestHeader(header.key, header.value); }); } if (options.xhr.withCredentials) { // use credentials xhr.withCredentials = true; } } xhr.addEventListener('progress', e => { instance.fireEvent('progress', e); if (e.lengthComputable && e.loaded == e.total) { fired100 = true; } }); xhr.addEventListener('load', e => { if (!fired100) { instance.fireEvent('progress', e); } instance.fireEvent('load', e); if (200 == xhr.status || 206 == xhr.status) { instance.fireEvent('success', xhr.response, e); } else { instance.fireEvent('error', e); } }); xhr.addEventListener('error', e => instance.fireEvent('error', e)); xhr.send(); instance.xhr = xhr; return instance; }