Home Reference Source Test Repository

buildDocs/delay.js

import { delay } from 'lodash';
import { DecoratorConfig, DecoratorFactory } from './factory';
import { PreValueApplicator } from './applicators';
/**
 * Invokes func after wait milliseconds. Any additional arguments are provided to func when it's invoked.
 *
 * @param {number} wait The number of milliseconds to delay invocation.
 * @param {...*} [args] Additional arguments to invoke the function with
 * @example
 *
 * class MyClass {
 *   value = 100;
 *
 *   @Delay(20)
 *   add(a) {
 *     this.value += a;
 *   }
 * }
 *
 * const myClass = new MyClass();
 *
 * myClass.add(10);
 *
 * myClass.value; // => 100;
 *
 * setTimeout(() => {
 *   myClass.value; // => 110;
 * }, 30);
 */
export const Delay = DecoratorFactory.createDecorator(new DecoratorConfig(function (value, wait, ...args) {
    return function (...invokeArgs) {
        return delay(value.bind(this), wait, ...invokeArgs, ...args);
    };
}, new PreValueApplicator(), { setter: true }));
export { Delay as delay };
export default Delay;