加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
09_Promise多个的处理.html 2.32 KB
一键复制 编辑 原始数据 按行查看 历史
shunxuan 提交于 2023-12-29 21:21 . promise
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>11_Promise对象</title>
</head>
<body>
<!--
Promise.prototype.then()
Promise.prototype.catch()
Promise.prototype.finally()
Promise.resolve()
Promise.reject()
Promise.all()
Promise.race()
Promise.allSettled()
Promise.any()
-->
<script>
// https://blog.csdn.net/m0_68324632/article/details/126459643
// Promise.all、Promise.allSettled、Promise.any、Promise.race
const userPromise = new Promise((reslove, reject) => {
setTimeout(function () {
// reslove(['mojobo', 'vanpelt', 'wycats']);
reject('no user')
}, 2000)
});
const moviePromise = new Promise((reslove, reject) => {
setTimeout(function () {
// reslove({ name: "天地滂沱如何渡?", rating: 9.2 });
reject(Error('no movie'))
}, 500)
})
// all按照先后顺序执行
// 成功的时候返回的是一个结果数组,
// 而失败的时候则返回最先被reject失败状态的值
// [只要有一个失败就报错]
// Promise.all([userPromise, moviePromise])
// .then(response => {
// const [users, movie] = response;
// console.log(users);
// console.log(movie);
// })
// .catch(err => {
// console.log(err)
// })
// race哪个结果获得的快,就返回那个结果
// // 不管结果本身是成功状态还是失败状态:「谁跑的快,以谁为准执行回调」
// Promise.race([userPromise,moviePromise])
// .then(response=>{
// console.log(response);
// })
// .catch(err=>{
// console.log(err)
// })
// // allSettled
// // 无论成功还是失败,都会返回一个数组
// // 成功: {status: 'fulfilled', value: Array(3)}
// // 失败: {status: 'rejected', reason: Error: no movie at http://127.0.0.1:5501/09_Pro
// Promise.allSettled([userPromise,moviePromise])
// .then(response=>{
// console.log(response);
// })
// // any
// // 只能成功一个 some 如果有一个元素满足条件,则表达式返回true
// // 全部失败才会失败 every 如果所有元素都满足条件,则返回 true
Promise.any([userPromise,moviePromise])
.then(response=>{ // 只要有一个 fetch() 请求成功
console.log(response);
})
.catch(err=>{ // 所有三个 fetch() 全部请求失败
console.log(err)
})
</script>
</body>
</html>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化