JavaScript Promise.resolve() — готова виконана обіцянка


Promise.resolve() створює обіцянку, яка вже виконана з переданим значенням.

автор: NagarD

Загальний опис

Найчастіше потрібен, щоб звести типи: функція іноді бере дані з кешу (миттєво), іноді з мережі (асинхронно). Щоб той, хто її викликає, не гадав, що йому повернули, обидві гілки віддають обіцянку — і кеш обгортається в resolve().

Якщо передати йому іншу обіцянку, він поверне її ж — не загорне обіцянку в обіцянку.

В async-функції цього робити не треба: вона й так завжди повертає обіцянку, навіть якщо всередині написано return 5.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
resolve 32+ 29+ 8+ 19+ 12+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
resolve 32+ yes yes 8+

Приклади

+ запропонувати свій приклад у пісочниці

Кеш і мережа повертають однаковий тип — обіцянку.

(async () => {
    const cache = new Map();

    function loadUser(id) {
        if (cache.has(id)) {
            // миттєво — але все одно обіцянка, щоб тип був один
            return Promise.resolve(cache.get(id));
        }

        return fetch('/api/users/' + id)
            .then(r => r.json())
            .then(user => {
                cache.set(id, user);
                return user;
            });
    }

    // той, хто викликає, не гадає — завжди await
    try {
        const user = await loadUser(1);
        console.log(user);
    } catch (error) {
        console.log('Запит не пройшов:', error.message);
    }

    // з кешу — вже без мережі
    cache.set(2, { id: 2, name: 'З кешу' });
    console.log(await loadUser(2));
})();
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід