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?