You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 3.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # ES6-Promise (subset of [rsvp.js](https://github.com/tildeio/rsvp.js)) [![Build Status](https://travis-ci.org/stefanpenner/es6-promise.svg?branch=master)](https://travis-ci.org/stefanpenner/es6-promise)
  2. This is a polyfill of the [ES6 Promise](http://www.ecma-international.org/ecma-262/6.0/#sec-promise-constructor). The implementation is a subset of [rsvp.js](https://github.com/tildeio/rsvp.js) extracted by @jakearchibald, if you're wanting extra features and more debugging options, check out the [full library](https://github.com/tildeio/rsvp.js).
  3. For API details and how to use promises, see the <a href="http://www.html5rocks.com/en/tutorials/es6/promises/">JavaScript Promises HTML5Rocks article</a>.
  4. ## Downloads
  5. * [es6-promise 27.86 KB (7.33 KB gzipped)](https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.js)
  6. * [es6-promise-auto 27.78 KB (7.3 KB gzipped)](https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.auto.js) - Automatically provides/replaces `Promise` if missing or broken.
  7. * [es6-promise-min 6.17 KB (2.4 KB gzipped)](https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.min.js)
  8. * [es6-promise-auto-min 6.19 KB (2.4 KB gzipped)](https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.auto.min.js) - Minified version of `es6-promise-auto` above.
  9. ## CDN
  10. To use via a CDN include this in your html:
  11. ```html
  12. <!-- Automatically provides/replaces `Promise` if missing or broken. -->
  13. <script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.js"></script>
  14. <script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.js"></script>
  15. <!-- Minified version of `es6-promise-auto` below. -->
  16. <script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.min.js"></script>
  17. <script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js"></script>
  18. ```
  19. ## Node.js
  20. To install:
  21. ```sh
  22. yarn add es6-promise
  23. ```
  24. or
  25. ```sh
  26. npm install es6-promise
  27. ```
  28. To use:
  29. ```js
  30. var Promise = require('es6-promise').Promise;
  31. ```
  32. ## Usage in IE<9
  33. `catch` and `finally` are reserved keywords in IE<9, meaning
  34. `promise.catch(func)` or `promise.finally(func)` throw a syntax error. To work
  35. around this, you can use a string to access the property as shown in the
  36. following example.
  37. However most minifiers will automatically fix this for you, making the
  38. resulting code safe for old browsers and production:
  39. ```js
  40. promise['catch'](function(err) {
  41. // ...
  42. });
  43. ```
  44. ```js
  45. promise['finally'](function() {
  46. // ...
  47. });
  48. ```
  49. ## Auto-polyfill
  50. To polyfill the global environment (either in Node or in the browser via CommonJS) use the following code snippet:
  51. ```js
  52. require('es6-promise').polyfill();
  53. ```
  54. Alternatively
  55. ```js
  56. require('es6-promise/auto');
  57. ```
  58. Notice that we don't assign the result of `polyfill()` to any variable. The `polyfill()` method will patch the global environment (in this case to the `Promise` name) when called.
  59. ## Building & Testing
  60. You will need to have PhantomJS installed globally in order to run the tests.
  61. `npm install -g phantomjs`
  62. * `npm run build` to build
  63. * `npm test` to run tests
  64. * `npm start` to run a build watcher, and webserver to test
  65. * `npm run test:server` for a testem test runner and watching builder