js函数先后执行的问题

情境是这样的,一个页面有评价模块,详情模块,以及图片模块,后台分别设置了对应的三个接口,因为整个页面都是从详情模块建立dom模板的,也就是说图片和评价后台各会返回一个数据,需要我填充到详情模块里去,有没有办法让我先调用了评价的ajax方法再调用图片的ajax最后再将里面重要的两个数据,一起汇总到核心模块详情里?有没办法让前两个函数先执行得到我要的结果再继续最后一个函数呢?
我是这么写的:
这种方法可以保证getPic,getEva先执行吗???

function getDetali(){  //获取详情的信息
getPic()//图片函数,返回一个图片数组
getEva()//评价函数,返回评价等级
if(xxxxx){
   showDetail() //显示整个界面
}
}
阅读 2.8k
3 个回答

回调:

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()
        }
    })

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题