Сообщение от Aetae
|
Никакой элегантности, левые не нужные таймеры...
|
Я не особо спец в написании классов...
Использую "функциональное" программирование. Стараюсь тренироваться по мере возможностей.
Такой вот еще вариант сделал, но там опять есть
pause.
class DummyClient {
async connect() {
return new Promise(resolve=>{
setTimeout(()=>{
console.log('connect');
resolve()
}
, 2000);
}
)
}
async doSomething() {
console.log('done something')
}
}
class ApiWrapper extends DummyClient {
#connect = null
async doSomething() {
while (!this.#connect) {
if (this.#connect == null) {
this.#connect = false
await this.connect()
this.#connect = true
}
await this.pause(100)
}
await super.doSomething()
}
pause(t) {
return new Promise(res => setTimeout(res, t))
}
}
const run = async () => {
const api = new ApiWrapper();
await Promise.all([
api.doSomething(),
api.doSomething(),
api.doSomething(),
api.doSomething()
]);
}
run();