@justifycontent

Как .then вызывается от объекта?

Не могу понять одну вещь:
const req = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('Подготовка данных...');
    
        const product = {
            name: 'TV',
            price: 2000,
        };

        resolve(product);
    }, 2000);
});

req.then(product => {
    return new Promise((resolve, reject) => {                            
        setTimeout(() => {
            product.status = 'order';
            resolve(product);
        }, 2000);
    });
}).then((data) => {
    data.modify = true;
    return data;
}).then(data => {
    console.log(data);
});

Вопрос по коду:

1. req.then возвращает Promise:
req.then(product => {
    return new Promise((resolve, reject) => {                            
        setTimeout(() => {
            product.status = 'order';
            resolve(product);
        }, 2000);
    });
})

2. От этого then вызывается еще один then, который возвращает data, data в данном случае - объект:
.then((data) => {
    data.modify = true;
    return data;
})

3. Далее вызывается еще один then, но ведь предыдущий then возвращает объект, как можно вызвать then от объекта, если then это метод Promise:
.then(data => {
    console.log(data);
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
.then всегда возвращает promise. Если функция внутри then вернула не promise, то этот ответ просто заворачивается в Promise.resolve
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽