promise中all和race的区别
1:promise.all(a,b)——会将a,b的参数都一起返回(所用时间为a+b)
2:promise.race(a,b)——会将定时器时间执行时间短的参数返回
把以下代码放在调试工具,看打印结果的先后顺序,以及打印时间就能明白了
const moviePromise = new Promise((reslove, reject) => { setTimeout(() => { reslove({ name: '摔跤吧!爸爸', rating: 9.2, year: 2016 }) }, 2000); }) const usersPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve(['mojobo', 'vanpelt', 'wycats']); }, 1000); }) // all的方法为两者promised都为reslove,才执行then的内容 // 但是如果其中一个promise的返回结果为reject,执行catch里的内容 Promise.all([moviePromise, usersPromise]).then(resposes => { console.log(resposes,'1'); // resposes为一个为对象,一个为数组 }).catch(error => { console.error(error,'2'); }); // race方法执行的结果由第一个promise的结果来决定的, // 遇到reject就直接执行catch,遇到resolve就直接执行then Promise.race([moviePromise, usersPromise]).then(resole => { // 如果 moviePromise 返回的是reject内容,usersPromise为resolve // 返回的resole为一个数组。因为先执行为usersPromise // 如果 usersPromise 返回的是reject内容,usersPromise返回是第一个,注意执行毫秒。 //moviePromise 为resolve // 应该执行catch的内容 console.log(resole,'3'); }).catch(error => { console.error(error,'4'); })