Функция Asyn c не вызывает код после ожидания - PullRequest
1 голос
/ 25 апреля 2020

Как видно из фрагмента кода ниже, код не выполняется после ожидания. Как это можно исправить, что я делаю не так?

let allProducts = [{"id": 1},{"id": 2},{"id": 3},{"id": 4},{"id": 5},]

function setCurrentProduct(id) {
    return new Promise(resolve => {
        for (const product of allProducts) {
            if (product.id == id) {
                // localStorage.setItem('currentProduct', JSON.stringify(product));
                document.querySelector("#localStorage").innerHTML = "Local Storage Done"
            }
        };
    });
}

async function productDetail(id) {
    try {
        await setCurrentProduct(id);
        document.querySelector("#check").innerHTML = "Done"
    } catch (error) {
        console.log(error)
    }
}

(function () {
  productDetail(4);
})();
<span id="check"></span>
<span id="localStorage"></span>

1 Ответ

1 голос
/ 25 апреля 2020

Вы должны решить это:

return new Promise(resolve => {
        for (const product of allProducts) {
            if (product.id == id) {
                // localStorage.setItem('currentProduct', JSON.stringify(product));
                document.querySelector("#localStorage").innerHTML = "Local Storage Done"
                resolve()
            }
        };
    });
...