javascript then превращает Promise в undefiend - пример кода для понимания работы

Такое происходит, если навешанный then ничего не возвращает, сравните два примера:

const responsePromise = new Promise(function(resolve) {
    setTimeout(() => { resolve('myValue')}, 1000); // разрешаем пропис через секунду
})  .then(function (response: any) {
    console.log('response in then', response);
    // return response; // расскомментируйте, и тогда
    // через 2 секунды промис будет иметь строковое значение
    // а не undfefined
})
.catch(function (error: any) {
    console.log('error', error);
});


setTimeout(
    () => { 
        console.log('promise val value after resolve:', responsePromise); 
    }, 2000); // через 2 секунды проверим состояние

console.log('responsePromise' , responsePromise);

И тот, что возвращает:

const responsePromise = new Promise(function(resolve) {
    setTimeout(() => { resolve('myValue')}, 1000); // разрешаем пропис через секунду
})  .then(function (response: any) {
    console.log('response in then', response);
    return response; // возвращаем значение!
})
.catch(function (error: any) {
    console.log('error', error);
});


setTimeout(
    () => { 
        console.log('promise val value after resolve:', responsePromise); 
    }, 2000); // через 2 секунды проверим состояние

console.log('responsePromise' , responsePromise);

-- во втором случае при распечатке объекта в value промиса мы увидим строку, что и требуется.

Key Words for FKN + antitotal forum (CS VSU):