Skip to content

fregante/one-event

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

one-event

Listen to one event via addEventListener, then resolve a Promise

Note: This module is based on the once option of addEventListener. Before v2 it was a replacement for it.

Install

npm install one-event
// This module is only offered as a ES Module
import oneEvent from 'one-event';

Usage

async function init() {
	await oneEvent(document.body, 'click', false);
	console.log('You clicked my body. Don’t do it again.');
	 
	const event = await oneEvent(document.head, ['mousedown', 'touchstart']);
	console.log('Knockout with:', event.type);
}

init();

API

oneEvent(target, typeOrTypes, options)

target and options are the same as what you supply to target.addEventListener(type, listener, options), with the addition of a filter to the options object.

typeOrTypes

Type: string | string[]

Matches the type parameter of addEventListener, but can also be used to listen to multiple events. The promise resolves when the first one happens.

options.filter

Type: (event: Event) => boolean

A filter function that will be called with the event that triggered the listener. The promise will resolve only once the filter returns true.

Alternatives

Related

  • one-mutation - Observe one mutation via MutationObserver, then resolve a Promise.
  • select-dom - Lightweight querySelector/All wrapper that outputs an Array.
  • doma - Parse an HTML string into DocumentFragment or one Element, in a few bytes.
  • Refined GitHub - Uses this module.

License

MIT © Federico Brigante

About

Micro module to add an event listener to be executed only once

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors