当前位置: 首页 > news >正文

promise使用示例

下面是一个 Promise 使用示例,通过 Promise 实现异步操作的链式调用:

const getUser = (userId) => {return new Promise((resolve, reject) => {// 模拟异步请求setTimeout(() => {const users = [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' },{ id: 3, name: 'Charlie' }]const user = users.find(u => u.id === userId)if (!user) {reject(new Error('User not found'))}resolve(user)}, 1000)})
}const getUserPosts = (user) => {return new Promise((resolve, reject) => {// 模拟异步请求setTimeout(() => {const posts = [{ id: 1, userId: 1, title: 'Post 1' },{ id: 2, userId: 1, title: 'Post 2' },{ id: 3, userId: 2, title: 'Post 3' },{ id: 4, userId: 3, title: 'Post 4' },{ id: 5, userId: 3, title: 'Post 5' }]const userPosts = posts.filter(p => p.userId === user.id)resolve(userPosts)}, 2000)})
}getUser(1).then(user => {console.log('User:', user)return getUserPosts(user)}).then(posts => {console.log('User posts:', posts)}).catch(error => {console.error(error)})

在这个示例中,我们定义了两个异步函数 getUsergetUserPosts,它们都返回一个 Promise 对象,用于模拟异步请求。我们通过 getUser 函数获取一个用户对象,然后通过 getUserPosts 函数获取这个用户的文章列表。在 Promise 的链式调用中,我们使用了 then 方法来处理异步操作的结果,使用 catch 方法来处理异常情况。

需要注意的是,Promise 的链式调用可以实现串行的异步操作,也可以实现并行的异步操作。例如,如果我们有多个异步操作需要同时执行,可以使用 Promise.all 函数把它们包装成一个 Promise 对象,然后通过 then 方法处理它们的结果。例如:

const getUsers = () => {return Promise.all([getUser(1),getUser(2),getUser(3)])
}getUsers().then(users => {console.log('Users:', users)}).catch(error => {console.error(error)})

在这个示例中,我们通过 Promise.all 函数把多个异步操作包装成一个 Promise 对象,当所有操作都完成后,我们通过 then 方法获取它们的结果。

http://www.lryc.cn/news/253969.html

相关文章:

  • 一起学docker系列之十四Dockerfile微服务实践
  • Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2
  • Python中字符串列表的相互转换详解
  • 09、pytest多种调用方式
  • 分布式锁常见实现方案
  • 26、pytest使用allure解读
  • Uncle Maker: (Time)Stamping Out The Competition in Ethereum
  • 浅谈可重入与线程安全
  • 深入理解TDD(测试驱动开发):提升代码质量的利器
  • pyqt5使用pyqtgraph实现动态热力图
  • 【android开发-16】android中文件和sharedpreferences数据存储详解
  • 《当代家庭教育》期刊论文投稿发表简介
  • 【操作教程】如何将外省医保转入广州市区(医保转移接续手续办理)?
  • 【分布式系统学习】CAP原理详解
  • 【聚类】K-modes和K-prototypes——适合离散数据的聚类方法
  • Python-炸弹人【附完整源码】
  • [英语学习][5][Word Power Made Easy]的精读与翻译优化
  • Apache Doris 详细教程(一)
  • 【Vue3从入门到项目实现】RuoYi-Vue3若依框架前端学习——登录页面
  • win11 关闭快速启动,解决重启后部分应用没有关闭的问题
  • python爬虫-某公开数据网站实例小记
  • 还记得当初自己为什么选择计算机?
  • “数”说新语向未来 | GBASE南大通用2023媒体交流会成功举办
  • 每天一点python——day88
  • xShell快捷键
  • OkGo导入失败解决办法
  • 02、pytest环境准备
  • 海上液化天然气 LNG 终端 ,数字孪生监控系统
  • C语言面试之旅:掌握基础,探索深度(面试实战之ARM架构二)
  • Axios详解及运用案例