Búsqueda de sitios web

typescript - ¿Es posible crear un objeto de tipo Promise<Promise<T>> en JavaScript?


Todas estas 3 declaraciones devuelven un Promise<T> en lugar de un 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

¿Es posible crear un Promise que resuelva otro Promise en JavaScript?

Respuesta #1

No.

Si el valor resuelto de una Promesa es otra Promesa, entonces será adoptado.