Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

es-xhr-promise

zeekay352MIT1.2.17

Module-friendly fork of xhr-promoise. Wrap the XMLHttpRequest object with Promise/A+ compliant promises.

xmlhttprequest, xhr, promise, promises, promises-a, promises-aplus, async, deferred, deferreds, es6, es6-promise

readme

Build Status NPM version

xhr-promise

This module wraps the XMLHttpRequest object with Promise/A+ compliant promises. The promise implementation is provided by the bluebird promise library.

Browser support

Because xhr-promise uses the XMLHttpRequest object this library will work with IE7+, Safari 5+ and evergreen browsers (Chrome and Firefox). You should read the bluebird docs for workarounds with promises and IE 7 and IE 8.

Installation

This package is available on npm as:

npm install xhr-promise

Example

The xhr-promise code in this example does the same thing as the following XMLHttpRequest code.

xhr-promise code:

var XMLHttpRequestPromise = require('xhr-promise');

var xhrPromise = new XMLHttpRequestPromise();

xhrPromise.send({
    method: 'POST',
    url: 'https://example.com/form',
    data: 'foo=bar'
  })
  .then(function (results) {
    if (results.status !== 200) {
      throw new Error('request failed');
    }
    // ...
  })
  .catch(function (e) {
    console.error('XHR error');
    // ...
  });

XMLHttpRequest code:

var xhr = new XMLHttpRequest();

xhr.onload = function () {
  if (xhr.status !== 200) {
    throw new Error('request failed');
  }
  // ...
}

xhr.onerror = function () {
  console.error('XHR error');
  // ...
}

xhr.open('POST', 'https://example.com/form', true);

xhr.send('foo=bar');

Access to the XMLHttpRequest object

You still have direct access to the XMLHttpRequest instance if you want to access or manipulate the object state yourself.

var XMLHttpRequestPromise = require('xhr-promise');

var xhrPromise = new XMLHttpRequestPromise();

xhrPromise.send({...})
  .then(function () {
    var xhr = xhrPromise.getXHR();
  });

Running the tests

$ npm install
$ grunt test

License

MIT

changelog

xhr-promise Changelog

Version 1.2.0, June 22nd, 2015

  • Updated dependencies.
  • Simplified setting the default content header.
  • Content-Type header can be set manually for requests with data.

Version 1.1.0, January 22nd, 2015

  • Added header and JSON parsing.
  • Send the correct header when data is present.
  • Include the actual response URL after following redirects.
  • Added mocha tests.

Version 1.0.0, January 18th, 2015

  • Initial release.