Is it possible to create an object of type Promise<Promise<T>> in JavaScript?

Viewed 84

All these 3 statements return a Promise<T> instead of a Promise<Promise<T>>

// first  
const foo = Promise.resolve(Promise.resolve(42))

// second
function bar() {
    return new Promise((resolve, reject) => {
        resolve(new Promise((resolve, reject) => {
            resolve(42)
        }));
    })
}

// third
function baz() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve(42)
                }, 1000)
            }))
        }, 1000)
    })
}

foo.then(console.log)  // 42
bar().then(console.log)  // 42
baz().then(console.log)  // 42

Is it possible to create a Promise which resolves another Promise in JavaScript?

1 Answers

No.

If the resolved value of a Promise is another Promise then it will be adopted.

Related