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.
		
		
		
		
		
			
		
			
				
					99 lines
				
				3.1 KiB
			
		
		
			
		
	
	
					99 lines
				
				3.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								# abort-controller
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[](https://www.npmjs.com/package/abort-controller)
							 | 
						||
| 
								 | 
							
								[](http://www.npmtrends.com/abort-controller)
							 | 
						||
| 
								 | 
							
								[](https://travis-ci.org/mysticatea/abort-controller)
							 | 
						||
| 
								 | 
							
								[](https://codecov.io/gh/mysticatea/abort-controller)
							 | 
						||
| 
								 | 
							
								[](https://david-dm.org/mysticatea/abort-controller)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								An implementation of [WHATWG AbortController interface](https://dom.spec.whatwg.org/#interface-abortcontroller).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								import AbortController from "abort-controller"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const controller = new AbortController()
							 | 
						||
| 
								 | 
							
								const signal = controller.signal
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								signal.addEventListener("abort", () => {
							 | 
						||
| 
								 | 
							
								    console.log("aborted!")
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								controller.abort()
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								> https://jsfiddle.net/1r2994qp/1/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## 💿 Installation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Use [npm](https://www.npmjs.com/) to install then use a bundler.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								npm install abort-controller
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Or download from [`dist` directory](./dist).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- [dist/abort-controller.mjs](dist/abort-controller.mjs) ... ES modules version.
							 | 
						||
| 
								 | 
							
								- [dist/abort-controller.js](dist/abort-controller.js) ... Common JS version.
							 | 
						||
| 
								 | 
							
								- [dist/abort-controller.umd.js](dist/abort-controller.umd.js) ... UMD (Universal Module Definition) version. This is transpiled by [Babel](https://babeljs.io/) for IE 11.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## 📖 Usage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Basic
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								import AbortController from "abort-controller"
							 | 
						||
| 
								 | 
							
								// or
							 | 
						||
| 
								 | 
							
								const AbortController = require("abort-controller")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// or UMD version defines a global variable:
							 | 
						||
| 
								 | 
							
								const AbortController = window.AbortControllerShim
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If your bundler recognizes `browser` field of `package.json`, the imported `AbortController` is the native one and it doesn't contain shim (even if the native implementation was nothing).
							 | 
						||
| 
								 | 
							
								If you wanted to polyfill `AbortController` for IE, use `abort-controller/polyfill`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Polyfilling
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Importing `abort-controller/polyfill` assigns the `AbortController` shim to the `AbortController` global variable if the native implementation was nothing.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								import "abort-controller/polyfill"
							 | 
						||
| 
								 | 
							
								// or
							 | 
						||
| 
								 | 
							
								require("abort-controller/polyfill")
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### API
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### AbortController
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								> https://dom.spec.whatwg.org/#interface-abortcontroller
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##### controller.signal
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The [AbortSignal](https://dom.spec.whatwg.org/#interface-AbortSignal) object which is associated to this controller.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##### controller.abort()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Notify `abort` event to listeners that the `signal` has.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## 📰 Changelog
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- See [GitHub releases](https://github.com/mysticatea/abort-controller/releases).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## 🍻 Contributing
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Contributing is welcome ❤️
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Please use GitHub issues/PRs.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Development tools
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- `npm install` installs dependencies for development.
							 | 
						||
| 
								 | 
							
								- `npm test` runs tests and measures code coverage.
							 | 
						||
| 
								 | 
							
								- `npm run clean` removes temporary files of tests.
							 | 
						||
| 
								 | 
							
								- `npm run coverage` opens code coverage of the previous test with your default browser.
							 | 
						||
| 
								 | 
							
								- `npm run lint` runs ESLint.
							 | 
						||
| 
								 | 
							
								- `npm run build` generates `dist` codes.
							 | 
						||
| 
								 | 
							
								- `npm run watch` runs tests on each file change.
							 |