Кажется, что в отличие от других репозиториев данных, которые я использую, я не могу использовать следующую стратегию в Redis:
export class CollectPromises {
private cachePromises: Array<Promise<any>> = [];
public addPromise(promise: Promise<any>): void {
this.cachePromises.push(promise);
};
public async executeAllPromises(): Promise<void> {
await Promise.all(this.cachePromises);
};
};
Мои функции в Redis:
async function addSingleDataToSet(key: string, data: any): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
RedisManager.redisClient.sadd([key].concat(data), ((err, res: number) => {
if(err) {
reject(err);
} else {
resolve(res == 1);
}
}));
});
};
async function usingRedis(x, y): Promise<void> {
await addSingleDataToSet(x, y);
}
И реальный код, который не должен ничего запускать перед executeAllPromises () (насколько я понимаю и как это происходит в других репозиториях)
CollectPromises.addPromise(usingRedis(x, y));
CollectPromises.addPromise(usingRedis(a, b));
CollectPromises.addPromise(usingRedis(c, d));
await CollectPromiser.executeAllPromises();
Проблема в том, что CollectPromises.addPromise (usingRedis (x, y)) (то же самое для других) запускается перед executeAllPromises (), который происходит только с использованием Redis.
Я хотел бы знать, что я делаю что-то не так или сталкиваюсь с какой-то конкретной проблемой Redis / Node.