Skip to content

Instantly share code, notes, and snippets.

@vlio20
vlio20 / batchPromise.ts
Last active July 3, 2018 10:10
batch promises (typescript)
static batchPromise(proms: (() => Promise<any>)[], batchSize: number): Promise<void> {
return this.chunck(proms, batchSize)
.reduce((step: Promise<any>, chunck) => {
return step.then(() => {
return Promise.all(chunck.map(fp => fp()));
});
}, Promise.resolve());
}
private static chunck<T>(array: T[], batchSize = 5): T[][] {
@vlio20
vlio20 / debounce.decorator.ts
Created July 4, 2018 06:26
typescript decorator for debounce
export const DEFAULT_DEBOUNCE_MS = 500;
export function debounce(ms: number = DEFAULT_DEBOUNCE_MS): Function {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor): any {
return {
configurable: true,
enumerable: descriptor.enumerable,
get: function (): () => any {
Object.defineProperty(this, propertyKey, {
configurable: true,
@vlio20
vlio20 / memoaize.decorator.ts
Created July 4, 2018 07:04
Typescript memoize decorator
const MEMOIZED_VALUE_KEY = '_memoizedValue';
export function memoize(expirationTimeMs: number = 60000) {
return (target: any, propertyName: string, descriptor: TypedPropertyDescriptor<any>) => {
if (descriptor.value != null) {
const originalMethod = descriptor.value;
const fn: any = function (...args: any[]) {
const key = MEMOIZED_VALUE_KEY + '_' + JSON.stringify(args);
if (!fn[key]) {
@vlio20
vlio20 / promise-all-controlled.ts
Created July 11, 2018 05:26
Promise all (not fail fast) with controlled concurrent requests
export interface ISuccessError {
success: boolean;
result?: any;
error?: any;
}
type PromFucn = (...args: any[]) => Promise<any>;
promiseAllConcurrent(promFuncs: PromFucn[],
concurrent: number = 1): Promise<ISuccessError[]> {
@vlio20
vlio20 / StatusCode.kt
Last active February 3, 2025 12:29
Kotlin Http Status Codes enum
package oogaday.commons.enums
enum class StatusCode(val code: Int) {
Continue(100),
SwitchingProtocols(101),
Processing(102),
OK(200),
Created(201),
Accepted(202),
@vlio20
vlio20 / after.ts
Last active September 9, 2019 15:10
utils-decorators
class WidgetProvider {
@after<WidgetProvider, Widget>({
func: () => {
console.log('widget created')
}
})
createWidget(name: string): Widget {
// some code
}
@vlio20
vlio20 / cancel-previous.ts
Created September 8, 2019 20:02
cancelPrevious
class Data {
@cancelPrevious()
getReportData(data: IReportParams): IReportData {
// some code
}
}
@vlio20
vlio20 / debounce.ts
Last active September 12, 2019 04:40
debounce
class MapView {
@debounce(100);
onScroll(): void {
// some code
}
}
@vlio20
vlio20 / delay.ts
Created September 9, 2019 15:07
delay.ts
class EmailSender {
@delay(1000);
sendEmail(email: Email): Promise<void> {
// some code
}
}
@vlio20
vlio20 / memoize.ts
Created September 9, 2019 15:12
memoize
class Fibonacci {
@memoize(10000)
fibo(n: number): number {
//some code
}
}