UNPKG

1.59 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var delay = require("lodash/delay");
4var factory_1 = require("./factory");
5var applicators_1 = require("./applicators");
6var decorator = factory_1.DecoratorFactory.createDecorator(new factory_1.DecoratorConfig(function (value, wait) {
7 var args = [];
8 for (var _i = 2; _i < arguments.length; _i++) {
9 args[_i - 2] = arguments[_i];
10 }
11 return function () {
12 var invokeArgs = [];
13 for (var _i = 0; _i < arguments.length; _i++) {
14 invokeArgs[_i] = arguments[_i];
15 }
16 return delay.apply(void 0, [value.bind(this), wait].concat(invokeArgs, args));
17 };
18}, new applicators_1.PreValueApplicator(), { setter: true }));
19/**
20 * Invokes func after wait milliseconds. Any additional arguments are provided to func when it's invoked.
21 *
22 * @param {number} wait The number of milliseconds to delay invocation.
23 * @param {...*} [args] Additional arguments to invoke the function with
24 * @example
25 *
26 * class MyClass {
27 * value = 100;
28 *
29 * @Delay(20)
30 * add(a) {
31 * this.value += a;
32 * }
33 * }
34 *
35 * const myClass = new MyClass();
36 *
37 * myClass.add(10);
38 *
39 * myClass.value; // => 100;
40 *
41 * setTimeout(() => {
42 * myClass.value; // => 110;
43 * }, 30);
44 */
45function Delay(wait) {
46 var args = [];
47 for (var _i = 1; _i < arguments.length; _i++) {
48 args[_i - 1] = arguments[_i];
49 }
50 return decorator.apply(void 0, [wait].concat(args));
51}
52exports.Delay = Delay;
53exports.delay = Delay;
54exports.default = decorator;
55//# sourceMappingURL=delay.js.map
\No newline at end of file