猿问

js函数先后执行的问题

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

我是这么写的:

这种方法可以保证getPic,getEva先执行吗???


function getDetali(){  //获取详情的信息

getPic()//图片函数,返回一个图片数组

getEva()//评价函数,返回评价等级

if(xxxxx){

   showDetail() //显示整个界面

}

}


慕码人2483693
浏览 1067回答 3
3回答

函数式编程

promise

沧海一幻觉

回调: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()        }    })

白板的微信

类似这样算不算是回调函数呢?有一部分没截图就是页面加载之初就调用了getDeatil(getEvaluation)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答