mirror of https://github.com/hashicorp/consul
25 lines
703 B
JavaScript
25 lines
703 B
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Service from '@ember/service';
|
|
import promisedTimeoutFactory from 'consul-ui/utils/promisedTimeout';
|
|
import { next } from '@ember/runloop';
|
|
|
|
const promisedTimeout = promisedTimeoutFactory(Promise);
|
|
export default class TimeoutService extends Service {
|
|
// TODO: milliseconds should default to 0 or potentially just null
|
|
// if it is 0/null use tick/next instead
|
|
// if Octane eliminates the runloop things, look to use raf here instead
|
|
execute(milliseconds, cb) {
|
|
return promisedTimeout(milliseconds, cb);
|
|
}
|
|
|
|
tick() {
|
|
return new Promise(function (resolve, reject) {
|
|
next(resolve);
|
|
});
|
|
}
|
|
}
|