首页 > 其他 > 详细

async await 和promise then 实现异步代码同步执行的 一些区别和注意事项

时间:2021-04-01 00:03:47      阅读:33      评论:0      收藏:0      [点我收藏+]

async await 同步 异步代码

async change(id,num){
         let res=await pAjax({
             url:"./api/updataCar.php",
             data:{
                 goods_id:id,
                 goods_num:num,
                 username:this.user
             }
         })
        //pAjax()是一个返回值为promise对象的ajax请求
        // 但此时用了await关键字 等待 所以res的值不是promise对象,而是pAjax()返回的promise对象 由peddling状态 变为执行成果或失败 的值 
        //可以简单理解为 await promise 对象后 res的值为 promise对象resolve()传递的值
         //console.log(res);
         res=JSON.parse(res)
         if(res.code){
             this.data.forEach(items => {
                 return items.goods_num=(items.goods_id==id)?num:items.goods_num
             });
        }
        localStorage.setItem("data",JSON.stringify(this.data))
        this.render()
   
        })

promise then 实现同步 异步代码

    async change(id,num){
         let res= pAjax({
            url:"./api/updataCar.php",
            data:{
                goods_id:id,
                goods_num:num,
                username:this.user,
                times:new Date().getTime()
            }
        })
        console.log(res);
        //此事输出的res 是一个promise对象 状态为pedding 执行中
        res.then(val=>{
            console.log(val);
            // console.log(res);
            val=JSON.parse(val)
            if(val.code){
                this.data.forEach(items => {
                    return items.goods_num=(items.goods_id==id)?num:items.goods_num
                });
            }
            localStorage.setItem("data",JSON.stringify(this.data))
            this.render()
        })

总结:两种方式 代码结构上 相差无几 只不过是res作为中间变量的值不同,一个是 ajax向后端请求返回的值,一个是携带了ajax向后端请求返回的值的promise对象

async await 和promise then 实现异步代码同步执行的 一些区别和注意事项

原文:https://www.cnblogs.com/junjie99/p/14603801.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!