Задать вопрос
@zakharoffam
Начинающий

Как забрать данные из промиса?

Не пинайте сильно. И так голова уже болит.
Я вроде не сильно бестолковый, но промисы - это нечто...
Подскажите, как можно вытащить данные из промиса (насколько я понимаю, это промис)?
Есть вот такая штука:
const ActiveDirectory = require('activedirectory');
const ad_config = require('../../config/config_ad_connect');

async function checkUser(login, password) {
    const ad = new ActiveDirectory(ad_config)
    await ad.authenticate(login, password, function(err, auth) {
        if (err) {
            console.log(err)
        }
        if (auth) {
            console.log(auth)
        }
    })
    return auth || err // Вот сюда надо каким-то образом засунуть то, что происходит внутри ad.authenticate
}

module.exports = checkUser

Я правда изучил все что написано в документации по промисам, async/await, callback-функциям. Не нужно советовать почитать. Три ночи читаю. Голова уже не работает.
Мне нужна именно такая архитектура моей функции. Это должна быть именно функция, которая принимает логин, пароль, проверяет их и возвращает то, что спрятано в промисе.
Как это сделать?
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Нет, это не промис, это асинхронная функция, которая отдает свой результат в колбэк, как правило такая функция ничего не возвращает, а значит и await'ить нечего, так как await требует метод then у результата выражения справа.
Но можно это обернуть в промис:
async function checkUser(login, password) {
    const ad = new ActiveDirectory(ad_config)
    const auth = await new Promise((resolve, reject) => {
        ad.authenticate(login, password, (err, auth) => {
            if (err) {
                return reject(err)
            }
            resolve(auth)
        })
    })
    return auth
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы