Promise.all方法:(promise)=>{ }
promise:包含n个promise的数组
返回一个新的promise,状态:若该数组中每一个promise都为成功则为成功,有一个失败则为失败;
成功的结果为成功的每一个promise的结果组成的数组,失败的结果为第一个失败的那一个promise的结果;
let p1 = new Promise((resolve,reject)=>{
resolve('OK');
})
// let p2 = Promise.resolve('Success');
let p2 = Promise.reject('Success');
let p3 = Promise.resolve('Oh Yeah');
const result = Promise.all([p1,p2,p3]);
console.log(result);
出现失败的promise对象,但是没有对应的回调对他的结果做处理,回导致游览器报错。
Promise.resolve方法:(value)=>{ }
返回一个成功/失败的promise对象
如果传入的参数为 非promise类型的对象,则返回状态为成功的promise对象,结果为传入的参数
如果传入的参数为promise类型的对象,则参数的的状态决定resolve的状态,结果为传入的promise对象
Promise.reject方法:(reason)=>{ }
返回一个失败的promise对象 结果为传入的参数
Promise.race方法:(promise)=>{ }
promise:包含n个promise的数组
返回一个新的promise,状态:第一个完成的promise对象的状态 结果为第一个完成的promise对象的结果
改变promise对象的状态的方式:
resolve和reject函数 throw 'xxx'; 抛出错误 三种
async函数
async function main(){
//1.如果返回值是一个非Promise类型的数据
// return 123
//2.如果返回的是一个Promise对象
// return new Promise((resolve,reject)=>{
// resolve('OK');
// reject('error');
// })
//3.抛出异常
// throw 'error'
}
let result = main();
console.log(result);
返回结果规律和then方法是一样的
await函数
1.await右侧的表达式一般为Promise对象,但也可以是其他值
2.如果表达式是promise对象,await返回的是promise成功的值 (不为promise对象)
3.如果表达式是其他值,直接将此值作为await的返回值
注意:
await必须写在async函数中,但async函数中可以没有await
如果await的promise失败了,就会抛出异常,需要通过try...catch捕获处理