切换主题
promise总结
更新时间: 3/6/2022字数: 0 字
Promise
对象表示异步操作最终的完成(或失败)的结果值。
Promise.resolve()
参数:可迭代对象。返回值:一个 promise
将值转为 Promise 对象。
Promise.reject()
参数:可迭代对象。返回值:一个 promise
返回一个已拒绝(rejected)的
Promise
对象,拒绝原因为给定的参数。Promise.all()
参数:可迭代对象。返回值:一个 promise
一个 promise 失败,返回的失败的 Promise,并带有第一个被拒绝的原因。
全部成功,返回所有成功结果的数组。
Promise.any()
参数:可迭代对象。返回值:一个 promise
一个 promise 成功,返回的成功的 Promise ,带有成功的原因。
全部失败,返回所有失败原因的数组
Promise.race()
参数:可迭代对象。返回值:一个 promise
返回第一个成功或者失败的结果值。
不管是成功还是失败。
Promise.allSettled()
参数:可迭代对象。返回值:一个 promise
全部完成(不管是成功还是失败)后,然后以一个数组的形式返回每个 Promise 的结果对象。
使用场景:
- 并行任务处理:当你需要同时发起多个异步操作,并且希望知道所有操作的结果(不论成功还是失败),而不是在任何一个操作失败时就停止。
Promise.withResolvers()
创建一个带有解决器和拒绝器的 Promise
ts// 创建一个带有解决器和拒绝器的 Promise const { promise, resolve, reject } = createPromiseWithResolvers(); // 可以在异步操作成功时调用 resolve setTimeout(() => { if (/* 某些条件满足 */) { resolve('操作成功'); } else { // 或者在失败时调用 reject reject('操作失败'); } }, 2000); promise.then(data => { console.log('成功:', data); }).catch(error => { console.error('失败:', error); });
相关问题
手写 promise.all()
ts
const promiseAll = (promiseArr) => {
return new Promise((resolve, reject) => {
const result = []
let successCount = 0
promiseArr.forEach((item, index) => {
Promise.resolve(item)
.then((res) => {
successCount++
result[index] = res
if (successCount === promiseArr.length) {
resolve(result)
}
})
.catch((err) => {
reject(err)
})
})
})
}
promiseAll([Promise.resolve(1), Promise.reject(2), Promise.resolve(3)]).then(
(res) => {
console.log('res', res)
}
)