xhr.ts 624 B

12345678910111213141516171819
  1. export interface BrowserTransportOptions {
  2. url: string;
  3. data: any;
  4. }
  5. export const makeXHRRequest = (options: BrowserTransportOptions): Promise<XMLHttpRequestResponseType> => {
  6. return new Promise((resolve, reject) => {
  7. const xhr = new XMLHttpRequest();
  8. xhr.open('POST', options.url, true);
  9. xhr.setRequestHeader('Content-Type', 'application/json');
  10. xhr.onerror = reject;
  11. xhr.onreadystatechange = (): void => {
  12. if (xhr.readyState === 4) {
  13. resolve(xhr.response);
  14. }
  15. };
  16. xhr.send(JSON.stringify(options.data));
  17. });
  18. };