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


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);
         await 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对象


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM