vue 基础 promise函数的使用

vue 基础 promise
1.promise基本使用

 		<script>
            new Promise((resolve,reject)=>{
                setTimeout(()=>{
                    //成功
                    //收到data后把 data传递到then那
                   resolve('hello world')

                   //失败
                   //调用 reject
                   reject('error')
                },1000)
            }).then((data)=>{
                //处理代码
                console.log(data);
                console.log(data);
                console.log(data);
            }).catch(err =>{
                console.log(err);
            })
        </script>

说明:

  • 1.成功时,2个参数 成功时(resolve)失败时(reject)

2.promise失败的时候

 <script>
        new Promise ((resolve,reject) =>{
            setTimeout(()=>{
                // resolve('hello Vue.js')
                reject('error message')
            },1000)
        }).then(data=>{
            console.log(data);
        },err=>{
            console.log(err);
        })
    </script>

说明:
1.当执行reject的时候就是错误的
2.会把错误信息当做参数 err 传递并打印
3.data是第一个参数,接收成功时的信息
4.err 是第二个参数,接收失败时候的错误信息

3.promise的链式编程一

<script>
        //  参数 -> 函数(resolve,reject)
        //     resolve ,reject 本身又是函数
        //     链式编程
            new Promise((resolve, reject) => {
                //第一次网络请求
                setTimeout(() => {
                    resolve();
                }, 1000);
            })
                .then(() => {
                    // 第一次结果的处理
                    console.log("Hello world");
                    console.log("Hello world");
                    console.log("Hello world");
                    console.log("Hello world");
                    console.log("Hello world");

                    return new Promise((resolve, reject) => {
                        // 第二次网络请求
                        setTimeout(() => {
                            resolve();
                        }, 1000);
                    });
                })
                .then(() => {
                    // 第二次处理的代码
                    console.log("hello vue");
                    console.log("hello vue");
                    console.log("hello vue");
                    console.log("hello vue");
                    console.log("hello vue");

                    return new Promise((resolve, reject) => {
                        // 第三次网络请求
                        setTimeout(() => {
                            resolve();
                        });
                    });
                })
                .then(() => {
                    setTimeout(() => {
                        // 第三次处理的代码
                        console.log("Hello python");
                        console.log("Hello python");
                        console.log("Hello python");
                        console.log("Hello python");
                        console.log("Hello python");
                    });
                });

 
    </script>

说明:
1.第一次网络请求完之后 .then执行第一次的处理结果
2.然后返回第二次的网络请求.then执行第二次的处理结果

4.promise的链式编程二

<script>
		 //网络请求:aaa -> 自己处理(10行)
            //处理:aaa111 -> 自己处理(10行)
            //处理:aaa111222 -> 自己处理
	       new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve("aaa");
                }, 1000);
            })
                .then((res) => {
                    //1.自己处理
                    console.log(res, "第一层的10行处理代码");

                    //2.对结果进行第一次处理
                     return Promise.resolve(res + "111");
                    // return Promise.reject('err message');
                    //throw 'err message'

                })
                .then((res) => {
                    console.log(res, "跌二层的10行处理");
                    return Promise.resolve(res + "222");
                })
                .then((res) => {
                    console.log(res, "第三层的10行代码处理");
                }).catch(err =>{
                    console.log(err);
                })
</script>

输出结果

aaa 第一层的10行处理代码
aaa111 跌二层的10行处理
aaa111222 第三层的10行代码处理

5.promise的all方法使用

 <script>
        Promise.all([
        
              new Promise((resolve,reject) =>{
                setTimeout(()=>{
                    // resolve('results1')
                    resolve({nam2:'zhangsan',age:19,sex:'男'})
                },2000)
            }),
            new Promise((resolve,reject) =>{
                setTimeout(()=>{
                    // resolve('results2')
                    resolve({nam2:'feng',age:16,sex:'男'})
                },1000)
            })
        ]).then(results =>{
            console.log(results);
        })
      </script>

说明:
1.俩个promise都执行成功才执行results

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值