callback是什麼鬼

好吧,最近在學習前後端交互,然後就需要用到callback函數,callback是什麼鬼~

好吧callback到達是什麼呢

知呼上有個大神描述的很形象

你到一個商店買東西,剛好你要的東西沒有貨,於是你在店員那裏留下了你的電話,過了幾天店裏有貨了,店員就打了你的電話,然後你接到電話後就到店裏去取了貨。在這個例子裏,你的電話號碼就叫回調函數,你把電話留給店員就叫登記回調函數,店裏後來有貨了叫做觸發了回調關聯的事件,店員給你打電話叫做調用回調函數,你到店裏去取貨叫做響應回調事件。

說說自己的遇到的問題,最近做的是學校詳情的一個頁面,需要通過<select>來選擇數據,再傳遞給後臺,本來是一個簡單的問題,通過 jq 的 change 事件,就能獲得數據了。但是有點坑的就是,省份數據傳輸,在歷屆分數線的接口是以省份id的形式傳參。而前端展現給用戶的是省份名稱,所以我在調用歷屆分數線接口的前,要先去調用省份接口,去獲取省份id來作爲歷屆分數的參數。

/*獲得省份id並調用歷屆分數線接口*/
var getProvincesId = function (ass, callback) {
      $.ajax({
    url: pub+"getProvinces.jsonp?callback=?",
    data:{ver:"1.0",
    deviceNumber:"",
    jsessionid:"",
    channelId:"5",
    platformId:"0",
    data:""
},
dataType: "jsonp",
success: function(d) {
    if (d.success) {
        for(var i=0;i<d.data.length;i++){
            if(d.data[i].name==ass){
                add=d.data[i].id;
                callback(add);
                /*fun2(add);*/
            }
        }

    } else {
        $("#searchResult").html("出現錯誤:" + data.msg);
    }  
},
});
};
/*調用歷屆分數線*/
var getScore = function (year,add,art) {

    $.ajax({
        url: pub+"school/readScore.jsonp?callback=?",
        data:{ver:"1.0",
        deviceNumber:"",
        jsessionid:"",
        channelId:"5",
        platformId:"0",
        data:"{schoolHashId:\""+schoolid+"\",year:\""+year+"\",provinceId:\""+add+"\",subjectTypeId:\""+art+"\"}"
        },
dataType: "jsonp",
success: function(d) {
    /*alert("歷屆分數");*/
    if (d.success) {
        $('#avgScore').html(d.data.avgScore);
        $('#minScore').html(d.data.minScore);
        $('#controlLine').html(d.data.controlLine);
        $('#batch').html(d.data.batch);
    } else {
        $("#searchResult").html("出現錯誤:" + data.msg);
    }  
},
});
};

var year=$("#year").find("option:selected").text();
var art=$("#art").find("option:selected").text();
var addr=$("#addr").find("option:selected").text();

 getProvincesId(addr, function(id) {
         getScore(year,id,art === "文科" ? 1: 0); 
         });

    $(".select").change(function(res){
                year=$("#year").find("option:selected").text();
                art=$("#art").find("option:selected").text();
                addr=$("#addr").find("option:selected").text();

         getProvincesId(addr, function(id) {
                    getScore(year,id,art === "文科" ? 1: 0); 
             });

 });

在這個案例中,執行函數返回的值,作爲回調函數的的參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章