Асинхронные функции являются не более чем синтаксическим сахаром для функций, которые возвращают обещания, и имеет смысл сделать функцию асинхронной, если вы используете await
в функции.
Ваша функция isAdminUser
не использует await
, поэтому ему не нужно async
.Это на самом деле ничего не делает.
Кроме того, вы передаете свой redis_client
на promisifyAll
, но для того, чтобы это имело какой-либо эффект, вам нужно использовать методы async
в клиенте.
Я немного переработал ваш код, чтобы перевести инициализацию клиента в обещание:
const initializeRedisClient = () => new Promise((resolve, reject) => {
const redis_client = bluebird.promisifyAll(redis.createClient({
host: '127.0.0.1',
no_ready_check: true,
auth_pass: '****',
}));
redis_client.on('connect', function () {
console.log('Redis client connected');
resolve(redis_client);
});
redis_client.on('error', function (err) {
console.log('Something went wrong with Redis Connection ' + err);
reject(err);
});
});
(async () => {
const redis_client = await initializeRedisClient();
const response = await isAdminUser(redis_client, 'c169024a-8902-4310-8955-ff46516e8703');
console.log("From Async " + response);
console.log("Server Connected and redis initialized.");
})()
console.log('2');
async function isAdminUser(redis_client, token) {
const result = redis_client.hmgetAsync(KEY_ADMIN_TOKENS, [token, token]);
console.log("Token Result : " + result);
return result;
}