Я хочу сгенерировать случайный идентификатор для каждого пользователя и сохранить его в наборе перерисовок, используя node.js. Мой первый подход состоял в том, чтобы сгенерировать случайный идентификатор, а затем проверить его уникальность, используя redis SISMEMBER, и, если он не был уникальным, повторить задачу выше, используя al oop. Проблема в том, что redis узла является асинхронным, поэтому я не могу реализовать l oop, описанный выше. Я также подумал об использовании обещаний, как показано ниже:
var promises = [], f=1;
while(f){
suggested_id = new_random_id();
promises.push(new Promise(function(resolve,reject) {
red_client.sismember("uids", suggested_id, function(err, value) {
if(err) {reject(err); }
resolve(value);
});
setTimeout(resolve, 1000, 'foo');
}));
Promise.all(promises).then((values)=>{
f = values[0];
});
}
}
, но опять же Promises.all - еще одна асинхронная функция, поэтому l oop начинает делать бесчисленные вызовы redis, не ожидая ответа от предыдущего. У кого-нибудь есть идеи, как это можно сделать?