提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
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