Xhr.weapp.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. "use strict";
  2. var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
  3. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  4. _Object$defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
  9. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
  10. class XhrWeapp {
  11. constructor() {
  12. (0, _defineProperty2.default)(this, "UNSENT", void 0);
  13. (0, _defineProperty2.default)(this, "OPENED", void 0);
  14. (0, _defineProperty2.default)(this, "HEADERS_RECEIVED", void 0);
  15. (0, _defineProperty2.default)(this, "LOADING", void 0);
  16. (0, _defineProperty2.default)(this, "DONE", void 0);
  17. (0, _defineProperty2.default)(this, "header", void 0);
  18. (0, _defineProperty2.default)(this, "readyState", void 0);
  19. (0, _defineProperty2.default)(this, "status", void 0);
  20. (0, _defineProperty2.default)(this, "response", void 0);
  21. (0, _defineProperty2.default)(this, "responseType", void 0);
  22. (0, _defineProperty2.default)(this, "responseText", void 0);
  23. (0, _defineProperty2.default)(this, "responseHeader", void 0);
  24. (0, _defineProperty2.default)(this, "method", void 0);
  25. (0, _defineProperty2.default)(this, "url", void 0);
  26. (0, _defineProperty2.default)(this, "onabort", void 0);
  27. (0, _defineProperty2.default)(this, "onprogress", void 0);
  28. (0, _defineProperty2.default)(this, "onerror", void 0);
  29. (0, _defineProperty2.default)(this, "onreadystatechange", void 0);
  30. (0, _defineProperty2.default)(this, "requestTask", void 0);
  31. this.UNSENT = 0;
  32. this.OPENED = 1;
  33. this.HEADERS_RECEIVED = 2;
  34. this.LOADING = 3;
  35. this.DONE = 4;
  36. this.header = {};
  37. this.readyState = this.DONE;
  38. this.status = 0;
  39. this.response = '';
  40. this.responseType = '';
  41. this.responseText = '';
  42. this.responseHeader = {};
  43. this.method = '';
  44. this.url = '';
  45. this.onabort = () => {};
  46. this.onprogress = () => {};
  47. this.onerror = () => {};
  48. this.onreadystatechange = () => {};
  49. this.requestTask = null;
  50. }
  51. getAllResponseHeaders() {
  52. let header = '';
  53. for (const key in this.responseHeader) {
  54. header += key + ':' + this.getResponseHeader(key) + '\r\n';
  55. }
  56. return header;
  57. }
  58. getResponseHeader(key) {
  59. return this.responseHeader[key];
  60. }
  61. setRequestHeader(key, value) {
  62. this.header[key] = value;
  63. }
  64. open(method, url) {
  65. this.method = method;
  66. this.url = url;
  67. }
  68. abort() {
  69. if (!this.requestTask) {
  70. return;
  71. }
  72. this.requestTask.abort();
  73. this.status = 0;
  74. this.response = undefined;
  75. this.onabort();
  76. this.onreadystatechange();
  77. }
  78. send(data) {
  79. // @ts-ignore
  80. this.requestTask = wx.request({
  81. url: this.url,
  82. method: this.method,
  83. data: data,
  84. header: this.header,
  85. responseType: this.responseType,
  86. success: res => {
  87. this.status = res.statusCode;
  88. this.response = res.data;
  89. this.responseHeader = res.header;
  90. this.responseText = (0, _stringify.default)(res.data);
  91. this.requestTask = null;
  92. this.onreadystatechange();
  93. },
  94. fail: err => {
  95. this.requestTask = null;
  96. // @ts-ignore
  97. this.onerror(err);
  98. }
  99. });
  100. this.requestTask.onProgressUpdate(res => {
  101. const event = {
  102. lengthComputable: res.totalBytesExpectedToWrite !== 0,
  103. loaded: res.totalBytesWritten,
  104. total: res.totalBytesExpectedToWrite
  105. };
  106. // @ts-ignore
  107. this.onprogress(event);
  108. });
  109. }
  110. }
  111. module.exports = XhrWeapp;
  112. var _default = exports.default = XhrWeapp;