Mantenga el objeto encadenable utilizando métodos asincrónicos
Digamos que tengo una claseTest
con alrededor de 10-20 métodos, todos los cuales son encadenables.
En otro método, tengo un trabajo asincrónico que hacer.
let test = new Test();
console.log(test.something()); // Test
console.log(test.asynch()); // undefined since the async code isn't done yet
console.log(test.asynch().something()); // ERROR > My goal is to make this
Dado que cualquier otro método es encadenable, creo que sería extraño para el usuario si este único método no lo fuera.
¿Hay alguna manera de mantener la cadenatem de mi clase?
Ya he pensado en pasar el siguiente método en una función de devolución de llamada dentro del parámetro de este método, pero no esDe Verda encadenando
test.asynch(() => something())
Lo mismo conPromises
, no esDe Verda encadenando
test.asynch().then(() => something())
El resultado que quiero es
test.asynch().something()
Aquí hay un fragmento que demuestra mi problema:
class Test {
/**
* Executes some async code
* @returns {Test} The current {@link Test}
*/
asynch() {
if (true) { //Condition isn't important
setTimeout(() => { //Some async stuff
return this;
}, 500);
} else {
// ...
return this;
}
}
/**
* Executes some code
* @returns {Test} The current {@link Test}
*/
something() {
// ...
return this
}
}
let test = new Test();
console.log(test.something()); // Test
console.log(test.asynch()); // undefined
console.log(test.asynch().something()); // ERROR > My goal is to make this work.