Por ejemplo, tengo el siguiente pseudocódigo:
public action1(): return stuff.pipe(delay(15000)); public action2(): return stuff.pipe(delay(15000)); public action3(): return stuff.pipe(delay(15000));El retraso es idéntico para cada devolución y no cambiará. Pero en lugar de tenerlo como un valor estático, me gustaría convertirlo en una constante a la que se pueda hacer referencia y modificar fácilmente si es necesario. Algo como el siguiente pseudocódigo:
Const delay = pipe(delay(15000)) public action1(): return stuff.delay; public action2(): return stuff.delay; public action3(): return stuff.delay;Intenté hacer referencia directamente al retraso usando const pero obtengo errores al intentar esto. Estoy usando el operador de retardo RJXS. La pregunta principal es: ¿hay alguna manera de convertir este operador en una constante que pueda usarse en múltiples áreas?
Puede definir una función genérica que aceptará el observador y vinculará el retraso con él y devolverá.
Puedes hacer algo como abajo
const getAfterDelay = (observer) => observer.pipe(delay(15000)); public action1(): return getAfterDelay(stuff); public action2(): return getAfterDelay(stuff); public action3(): return getAfterDelay(stuff); declare module 'rxjs/internal/Observable' { interface Observable<T> { delay(): Observable<T>; } } Observable.prototype.delay = function(): Observable<any> { return this.pipe(delay(15000)); }; Esto permite la sintaxis que está buscando: stuff.delay(); .
Método de extensión de retraso observable en mecanografiado para el ejemplo de StackBlitz.