1
你好,我對這個論點很困惑:我知道在JavaScript函數有時以異步方式執行 ,這是我的問題。我有一個函數叫做功能和防禦jquery
function createPopupHour()
這個函數創建一個html select元素,它不會返回任何東西。我在請求成功部分的$ .AJAX請求中調用了這個函數。
$.ajax({
url:"responseregistrodocente.php",
data:{
operazione:'caricaAssenza',
idAssenza:id_array[3],
codiceFiscale: id_array[0],
data:id_array[1],
tipo:id_array[2]
},
type:"POST",
dataType:"json",
success: function (jsonObject) {
createPopupHourSelect()
//other code
});
},
error: function(error){
//XMLREQQUESTOBJECT
alert(error.responseText);
location.reload();
},
cache:false,
ifModified:false
});
的問題是,當我調用函數的其他代碼不衡量某人,我的功能結束。我知道在jQuery中有「延期對象」,也許我需要我的函數創建一個延期對象,並將其返回給代碼。但是sintax怎麼樣?還是有另一種更容易和乾燥的解決方案?
是這樣的嗎?
function createPopupHour select(){ //staff to do
return $.deferred();//it's in pending state
}
,並執行$就
$.ajax({
url:"responseregistrodocente.php",
data:{
operazione:'caricaAssenza',
idAssenza:id_array[3],
codiceFiscale: id_array[0],
data:id_array[1],
tipo:id_array[2]
},
type:"POST",
dataType:"json",
success: function (jsonObject) {
var defered=createPopupHourSelect()
defered.then(function{//other code])
defered.resolve();
});
},
error: function(error){
//XMLREQQUESTOBJECT
alert(error.responseText);
location.reload();
},
cache:false,
ifModified:false
});
你是什麼意思的「其他代碼不知道我的函數結束」? – Johan
當函數在執行調用後返回代碼時,正常程序流程不需要使用異步代碼。如果其他代碼沒有運行,那麼這可能是因爲你的代碼在調用函數時或者在函數內部崩潰了。檢查錯誤控制檯是否有任何Javascript錯誤消息。 – Guffa
我的意思是代碼必須運行之前,功能beacuse我不能例如更改一個按鈕的css風格比我在函數中創建,因爲當css被修改時,按鈕不存在。 –