- <script>
- // 实例化
- // Promise的状态改变了之后就结束了
- const p1 = new Promise((resolve, reject) => {
- if (true) {
- resolve('成功');
- } else {
- reject('失败')
- }
- });
- const p2 = new Promise(resolve => {
- setTimeout(() => {
- resolve('aaa');
- }, 1000)
- });
- const p3 = new Promise(resolve => {
- setTimeout(() => {
- resolve('bbb');
- }, 200)
- });
- const p4 = new Promise(resolve => {
- setTimeout(() => {
- resolve('ccc');
- }, 3000)
- });
- // 静态方法--all,any,race
- //all()
- Promise.all([p2, p3, p4]).then(values => {
- console.log(values);
- });
- // any();
- Promise.any([p2, p3, p4]).then(values => {
- console.log(values);
- });
- // race();
- Promise.race([p2, p3, p4]).then(values => {
- console.log(values);
- });
- // 所有的成功才可以,并发执行多个promise,必须多个(所有的)状态都变成成功才可以
- // console.log(Promise.all);
- // 任何一个成功就可以,只要并发中有一个成功,就返回那个成功的promise的值
- // console.log(Promise.any);
- // 谁跑的快就是谁--赛跑,并发执行多个promise,找出跑的最快的
- // console.log(Promise.race);
- // console.log(Promise.reject);
- // console.log(Promise.resolve);
- </script>
[color=rgb(19, 192, 126) !important]复制代码
2.async控制顺序- <script>
- // async和await是ES7提出来的关键字,主演用于补充Promise
- // Promise控制异步顺序,解决回调地狱
- // async:用在一个函数前面,声明函数中有异步的操作
- // await:只能用在async修饰的函数,必须配合async使用,用于等待一个Promise实例的状态变化
- async function fn(){
- let tet=await new Promise((resolve,reject)=>{
- if(true){
- setTimeout(()=>{
- resolve('成功');
- },5000);
- }else{
- reject('失败');
- }
- });
- console.log(tet);
- };
- fn();
- </script>
[color=rgb(19, 192, 126) !important]复制代码
- <script>
- async function getData(){
- let r1=await axios.get('http://162.14.107.109/list')
- console.log('接口1list',r1.data);
- let r2=await axios.get('http://162.14.107.109/show?id=1174')
- console.log('接口2show',r2.data);
- let r3=await axios.get('http://162.14.107.109/show?id=1185')
- console.log('接口3show',r3.data);
- }
- getData();
- </script>
[color=rgb(19, 192, 126) !important]复制代码
[color=rgb(19, 192, 126) !important]
|