Promise, resolve() возвращает только первое значение?

Хочу разобраться с Promise, но возникает вопрос. Я хочу чтобы Promise возвращал мне по клику на элемент его значение. При первом клике он возвращает, но вот во-второй раз уже нет. Хотя функция которая находится внутри этого Promise отрабатывает при каждом клике.
function createQuestion(step) {
        let block = document.querySelector(".block"),
            questionWrapper = '';

        for (let key in question[step]) {
            questionWrapper += `
            <div class="question-wrapper">
                <div class="question">
                    <p data-type = "${key}" >${question[step][key]}</p>
                </div>
                <div class="answer">
                    <div data-type = "${key}"  data-val="0" class="answer_variant active">0</div>
                    <div data-type = "${key}"  data-val="1" class="answer_variant">1</div>
                    <div data-type = "${key}"  data-val="2" class="answer_variant">2</div>
                    <div data-type = "${key}"  data-val="3" class="answer_variant">3</div>
                    <div data-type = "${key}"  data-val="4" class="answer_variant">4</div>
                    <div data-type = "${key}"  data-val="5" class="answer_variant">5</div>
                    <div data-type = "${key}"  data-val="6" class="answer_variant">6</div>
                    <div data-type = "${key}"  data-val="7" class="answer_variant">7</div>
                    <div data-type = "${key}"  data-val="8" class="answer_variant">8</div>
                    <div data-type = "${key}"  data-val="9" class="answer_variant">9</div>
                    <div data-type = "${key}"  data-val="10" class="answer_variant">10</div>
                </div>
            </div>
         `;
            block.innerHTML = questionWrapper;
        }
    }

    const promis = new Promise((resolve, reject) => {
        createQuestion(step);
        let answer = document.querySelectorAll(".answer_variant");
        answer.forEach(item => {
            item.addEventListener("click", () => {
                let previousItem = item,
                    nextItem = item;
                while (previousItem = previousItem.previousElementSibling) {
                    previousItem.classList.remove("active");
                }
                while (nextItem = nextItem.nextElementSibling) {
                    nextItem.classList.remove("active");
                }
                item.classList.add("active");
                // console.log(item);
                resolve(item);
            })
        })
    }).then(item => {
        console.log(item);
    });
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ответы на вопрос 1
@egovar
Frontend-developer
Для начала, вижу ошибку здесь. Знак = должен быть двойным или тройным

while (previousItem = previousItem.previousElementSibling) {
                    previousItem.classList.remove("active");
                }
                while (nextItem = nextItem.nextElementSibling) {
                    nextItem.classList.remove("active");
                }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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