gecko-dev/devtools/shared/async-utils.js
Alexandre Poirot 2d43f710c5 Bug 1440320 - Removed unused methods from async-utils module. r=jryans
MozReview-Commit-ID: 3ixJhRWeRpd

--HG--
extra : rebase_source : 55a274b88d94d6574ab71268ca054ad93561ef7e
2018-02-19 02:29:12 -08:00

40 lines
1.5 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
/**
* Helpers for async functions. Async functions are generator functions that are
* run by Tasks. An async function returns a Promise for the resolution of the
* function. When the function returns, the promise is resolved with the
* returned value. If it throws the promise rejects with the thrown error.
*
* See Task documentation at https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm.
*/
var {Task} = require("devtools/shared/task");
/**
* Adds an event listener to the given element, and then removes its event
* listener once the event is called, returning the event object as a promise.
* @param nsIDOMElement element
* The DOM element to listen on
* @param String event
* The name of the event type to listen for
* @param Boolean useCapture
* Should we initiate the capture phase?
* @return Promise
* The promise resolved with the event object when the event first
* happens
*/
exports.listenOnce = function listenOnce(element, event, useCapture) {
return new Promise(function (resolve, reject) {
let onEvent = function (ev) {
element.removeEventListener(event, onEvent, useCapture);
resolve(ev);
};
element.addEventListener(event, onEvent, useCapture);
});
};