@Hellas

Как переписать функцию под async/await (es7)?

const async = require('async')

function getTopicsData(tids, Uid, callback) {
  async.map(tids, (tid, next) => {
    redis.hgetall(`topic:${tid}`, (err, topics) => {
      redis.sismember(`topic:${tid}:subscribers`, Uid, (err, subscriber) => {
        topics.subscriber = !!subscriber

        next(false, topics)
      })
    })
  }, callback)
}

module.exports = getTopicsData
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
alvvi
@alvvi
export default apathy;
А в чем у вас собственно трудность?
Допустим, я бы переписал как-то так.
function getTopicsData(tids, Uid) {

  const result = tids.map(async tid => {
      // если hgetall возвращает промис
        const topics = await redis.hgetall(`topic:${tid}`).catch(err => console.error(err));
      // если sismebmer вовзращает промис
        const subscriber = await redis.sismember(`topic:${tid}:subscribers`, Uid).catch(err => console.error(err));
        topics.subscriber = !!subscriber
        return topics; // или что вам там надо в результате? В общем, то что надо нужно вернуть тут.
    })
  
  return Promise.all(result); 
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы