Xhr.weapp.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  2. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  3. var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  4. module.exports = function () {
  5. function XhrWeapp() {
  6. (0, _classCallCheck2.default)(this, XhrWeapp);
  7. this.UNSENT = 0;
  8. this.OPENED = 1;
  9. this.HEADERS_RECEIVED = 2;
  10. this.LOADING = 3;
  11. this.DONE = 4;
  12. this.header = {};
  13. this.readyState = this.DONE;
  14. this.status = 0;
  15. this.response = '';
  16. this.responseType = '';
  17. this.responseText = '';
  18. this.responseHeader = {};
  19. this.method = '';
  20. this.url = '';
  21. this.onabort = function () {};
  22. this.onprogress = function () {};
  23. this.onerror = function () {};
  24. this.onreadystatechange = function () {};
  25. this.requestTask = null;
  26. }
  27. (0, _createClass2.default)(XhrWeapp, [{
  28. key: "getAllResponseHeaders",
  29. value: function () {
  30. var header = '';
  31. for (var key in this.responseHeader) {
  32. header += key + ':' + this.getResponseHeader(key) + '\r\n';
  33. }
  34. return header;
  35. }
  36. }, {
  37. key: "getResponseHeader",
  38. value: function (key) {
  39. return this.responseHeader[key];
  40. }
  41. }, {
  42. key: "setRequestHeader",
  43. value: function (key, value) {
  44. this.header[key] = value;
  45. }
  46. }, {
  47. key: "open",
  48. value: function (method, url) {
  49. this.method = method;
  50. this.url = url;
  51. }
  52. }, {
  53. key: "abort",
  54. value: function () {
  55. if (!this.requestTask) {
  56. return;
  57. }
  58. this.requestTask.abort();
  59. this.status = 0;
  60. this.response = undefined;
  61. this.onabort();
  62. this.onreadystatechange();
  63. }
  64. }, {
  65. key: "send",
  66. value: function (data) {
  67. var _this = this;
  68. this.requestTask = wx.request({
  69. url: this.url,
  70. method: this.method,
  71. data: data,
  72. header: this.header,
  73. responseType: this.responseType,
  74. success: function (res) {
  75. _this.status = res.statusCode;
  76. _this.response = res.data;
  77. _this.responseHeader = res.header;
  78. _this.responseText = JSON.stringify(res.data);
  79. _this.requestTask = null;
  80. _this.onreadystatechange();
  81. },
  82. fail: function (err) {
  83. _this.requestTask = null;
  84. _this.onerror(err);
  85. }
  86. });
  87. this.requestTask.onProgressUpdate(function (res) {
  88. var event = {
  89. lengthComputable: res.totalBytesExpectedToWrite !== 0,
  90. loaded: res.totalBytesWritten,
  91. total: res.totalBytesExpectedToWrite
  92. };
  93. _this.onprogress(event);
  94. });
  95. }
  96. }]);
  97. return XhrWeapp;
  98. }();