为了账号安全,请及时绑定邮箱和手机立即绑定

js函数先后执行的问题

js函数先后执行的问题

慕码人2483693 2019-03-12 17:42:35
情境是这样的,一个页面有评价模块,详情模块,以及图片模块,后台分别设置了对应的三个接口,因为整个页面都是从详情模块建立dom模板的,也就是说图片和评价后台各会返回一个数据,需要我填充到详情模块里去,有没有办法让我先调用了评价的ajax方法再调用图片的ajax,最后再将里面重要的两个数据,一起汇总到核心模块详情里?有没办法让前两个函数先执行得到我要的结果再继续最后一个函数呢?我是这么写的:这种方法可以保证getPic,getEva先执行吗???function getDetali(){  //获取详情的信息getPic()//图片函数,返回一个图片数组getEva()//评价函数,返回评价等级if(xxxxx){   showDetail() //显示整个界面}}
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

promise


查看完整回答
反对 回复 2019-03-29
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

回调:


function getDetali(){ 

    getPic(function(d1) {

        getEva(fucntion(d2) {

            if(d1 && d2) {

               showDetail(d2)      

            }

        })  

    }) 

}


function getPic(cb) {

    ajax({

        success(d){

            if(cb) cb(d)

        }

    })

}

function getEva(cb) {

    ajax({

            success(d){

                if(cb) cb(d)

            }

        })

}

function showDetail (cb) {

    ajax({

        success(d){

            if(cb) cb(d)

        }

    })

}

promise:



function getDetali(){ 

    getPic().then(getEva).then(showDetail)

}



function getPic() {

    return new Promise((reslove, reject) => {

        ajax({

            success(d){

                if(d) reslove(d)

            }

        })  

    })

}

function getEva() {

    return new Promise((reslove, reject) => {

        ajax({

            success(d){

                if(d) reslove(d)

            }

        })  

    })

}

function showDetail () {

    return new Promise((reslove, reject) => {

        ajax({

            success(d){

                if(d) reslove(d)

            }

        })  

    })

}

async/await:


    async(()=>{

        const d1 = await getPic()

        const d2 = await getEva()

        if(d1 && d2){

            showDetail()

        }

    })


查看完整回答
反对 回复 2019-03-29
?
白板的微信

TA贡献1883条经验 获得超3个赞

https://img1.sycdn.imooc.com//5c9dd3060001bf0d04130164.jpg

类似这样算不算是回调函数呢?有一部分没截图就是页面加载之初就调用了getDeatil(getEvaluation)

查看完整回答
反对 回复 2019-03-29
  • 3 回答
  • 0 关注
  • 1066 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信