Promise复习es6+

本文介绍了Promise.all方法的使用场景,它需要接收一个包含Promise对象的数组,所有Promise都成功才会触发resolve,否则第一个失败的Promise会触发reject。同时,对比了Promise.race,它会在第一个Promise完成(无论成功或失败)时立即触发结果。此外,还讨论了async和await的作用,它们简化了Promise链式调用,使得异步代码更易读。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

promise.all 方法的使用场景?数组中必须每一项都是 promise 对象吗?不是 promise 对象会如何处理 ?

promise.all()方法是promise对象上的静态方法,promise.all方法的作用是将多个promise对象实例包装,生成并返回一个新的promise实例。
promise.all在集合多个promise的返回结果时很有用。
返回值将会按照参数内的promise对象实例顺序排列,而不是按照完成的顺序。
promise.all的特点
接受一个具有promise对象实例组成的数组或者具有Iterator接口的对象
如果元素不是promise对象,则会使用promise.resolve转换成promise对象
如果全部成功,状态则改变为Fulfilled,返回值将组成一个数组传给回调
只有一个失败,状态则改变为rejected,返回值将直接传递给all的返回值,也是新的promise对象??
Tips:15

Promise

Promise是异步编程的解决方案,比传统的异步解决方案(回调函数和事件)更加合理且强大。
特点:
1、对象的状态不受外部函数影响(3种状态):
pending:进行中
Fulfilled:已成功
Rejected:已失败
2、状态不可逆
Tips:57

async与await的作用

async是一个修饰符,async定义的函数默认返回promise对象的resolve的值,因此对async函数可以直接进行then操作,返回的值即是then方法的传入函数
await关键字只能在async函数中使用,用于获取promise返回的内容,获取的是promise函数中resolve或reject的值
Tips:66

promise 的其他方法有用过吗?如 all、race。请说下这两者的区别

promise.all方法参数是由promise对象实例组成的数组,只有当所有的promise都完成并返回成功,才会调用resolve,当有一个失败,都会进入catch,被捕获错误,promise.all调用成功返回的结果是每个promise单独调用成功之后的返回的结果组成的数组,如果调用失败的话,则返回的是第一个reject的结果
promise.race也会调用所有promise,返回的是第一个完成的promise的结果,不管成功或失败
Tips:85

代码题

第一题

new Promise((resolve, reject) => {
    reject(1);
    console.log(2);
    resolve(3);
    console.log(4);
}).then((res) => { console.log(res) })
    .catch(res => { console.log('reject1') })
try {
    new Promise((resolve, reject) => {
        throw 'error'
    }).then((res) => { console.log(res) })
        .catch(res => { console.log('reject2') })
} catch (err) {
    console.log(err)
}

结果为:2 4 reject1 reject2
Tips:62

第二题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,主要用于构建高性能、事件驱动的网络应用程序。如果你正在准备 Node.js 的期末考试,以下是一些关键知识点和复习建议: 1. **核心概念**: - **事件循环(Event Loop)**: Node.js 的异步编程模型依赖于事件循环,理解如何处理回调函数和 Promise。 - **非阻塞 I/O**:Node.js 使用单线程处理网络请求,通过事件驱动避免了传统服务器中的阻塞。 2. **Node.js API**: - **fs模块**:文件系统操作,如读写文件、目录操作等。 - **http和https模块**:用于创建网络服务器和客户端。 - **Express框架**:常用于构建 Web 应用程序,理解路由、中间件和模板引擎。 - **WebSocket**:实时通信技术,在 Node.js 中的应用实例。 3. **模块系统**: - 导入和导出模块的方法。 - CommonJS 和 ES6 模块的区别。 4. **Node.js 错误处理**: - try-catch-finally 语句的使用,以及错误对象的处理。 - 使用 `process.on('uncaughtException', handler)` 监听未被捕获的异常。 5. **异步编程**: - Promise 和 async/await 的理解和使用。 - 错误处理与 Promise 的结合。 6. **性能优化**: - 避免回调地狱,使用 Promise 或 async/await。 - 了解 Cluster 和 Worker 模块,如何扩展多进程。 7. **实际项目示例**: - 参考实际的 Node.js 项目案例,如 RESTful API、命令行工具或实时聊天应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值