Promise static function implement

TechSight_leo
Jun 26, 2023

--

  1. implement promisify
function promisify(fn) {
return function(...args) {
return new Promise((resolve, reject) => {
fn(...args, function(err, data) {
if (err) return reject
})
})
}
}

2. implement Promise.all

Promise.all = function(values) {
let ret = []
let len = values.length
return new Promise((resolve, reject) => {
values.forEach((val, idx) => {
Promise.resolve(val).then((data) => {
ret[idx] = data
if (--len === 0) {
resolve(ret)
}
}, reject)
})
})
}

3 implement Promise.race

Promise.race = function(values) {
return new Promise((resolve, reject) => {
values.forEach((val, idx) => {
Promise.resolve(val).then(resolve, reject)
})
})
}

4 implement abort

function withAbort(userPromise) {
let abort
let p = new Promise((resolve, reject) => {
abort = reject
})
abort = Promise.race([userPromise, p])
p.abort = abort
return p
}

--

--