On gists
Promise / Promise.withResolvers
•
JavaScript
example.js
Raw
#
const { promise, resolve, reject } = Promise.withResolvers();
setTimeout(() => resolve('Done!'), 1000);
promise.then(console.log); // 'Done!'
function foo()
{
const {promise, resolve, reject} = Promise.withResolvers()
setTimeout(() => {
resolve('DONE')
}, 2000)
return promise
}
function foo2()
{
const {promise, resolve, reject} = withResolvers()
setTimeout(() => {
resolve('DONE 2')
}, 2500)
return promise
}
// polyfill
function withResolvers() {
let resolve, reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
return { promise, resolve, reject };
}
// Použití:
const { promise: aliasOnlyForTesting, resolve } = withResolvers();
(async() => {
const data = await foo()
console.log(data)
const data2 = await foo2()
console.log(data2)
})()