UNPKG

2.13 kBJavaScriptView Raw
1/**
2 * HTTP Response Header 事件回调函数的参数
3 * @typedef {Object} HeadersReceivedParam
4 * @property {Object} header 开发者服务器返回的 HTTP Response Header
5 */
6/**
7 * HTTP Response Header 事件的回调函数
8 * @callback HeadersReceivedCallback
9 * @param {HeadersReceivedParam} res 参数
10 */
11/**
12 * 进度变化回调函数的参数
13 * @typedef {Object} ProgressUpdateParam
14 * @property {number} progress 进度百分比
15 * @property {number} [totalBytesWritten] 已经下载的数据长度,单位 Bytes
16 * @property {number} [totalBytesSent] 已经上传的数据长度,单位 Bytes
17 * @property {number} [totalBytesExpectedToWrite] 预期需要下载的数据总长度,单位 Bytes
18 * @property {number} [totalBytesExpectedToSend] 预期需要上传的数据总长度,单位 Bytes
19 */
20/**
21 * 进度变化事件的回调函数
22 * @callback ProgressUpdateCallback
23 * @param {ProgressUpdateParam} res 参数
24 */
25const NETWORK_TIMEOUT = 60000;
26const XHR_STATS = {
27 UNSENT: 0,
28 OPENED: 1,
29 HEADERS_RECEIVED: 2,
30 LOADING: 3,
31 DONE: 4 // The operation is complete.
32};
33/**
34 * 设置xhr的header
35 * @param {XMLHttpRequest} xhr
36 * @param {Object} header
37 */
38const setHeader = (xhr, header) => {
39 let headerKey;
40 for (headerKey in header) {
41 xhr.setRequestHeader(headerKey, header[headerKey]);
42 }
43};
44/**
45 * 将 blob url 转化为文件
46 * @param {string} url 要转换的 blob url
47 * @returns {Promise<File>}
48 */
49const convertObjectUrlToBlob = url => {
50 return new Promise((resolve, reject) => {
51 const xhr = new XMLHttpRequest();
52 xhr.open('GET', url, true);
53 xhr.responseType = 'blob';
54 xhr.withCredentials = true;
55 xhr.onload = function () {
56 if (this.status === 200) {
57 resolve(this.response);
58 }
59 else {
60 /* eslint-disable prefer-promise-reject-errors */
61 reject({ status: this.status });
62 }
63 };
64 xhr.send();
65 });
66};
67
68export { NETWORK_TIMEOUT, XHR_STATS, convertObjectUrlToBlob, setHeader };
69//# sourceMappingURL=utils.js.map