[英]jQuery wait till function finishes
我有這個腳本:
var d;
$(".circle").click(function() {
var id = $(this).attr('id');
var MyDiv1 = document.getElementById(id);
var name = MyDiv1.innerHTML;
$.get("url", function(data){
d=data;
});
d=d.split(",");
var arrayLength = d.length;
for (var i = 0; i < arrayLength; i++) {
if(i==id)
custom_alert(d[i], name);
}
});
我想打電話
d = d.split(",");
只有在我確定d不是undefined
。
在$.get
函數完成並將d分配給數據之后,我該如何執行呢?
您可以簡單地將其放入回調中? :
$.get("url", function(d){
d=d.split(",");
var arrayLength = d.length;
for (var i = 0; i < arrayLength; i++) {
if(i==id)
custom_alert(d[i], name);
}
});
或使用ES7(非常新的東西):
(async function(){
var d=await new Promise(function(r){
$.get("url",r);
});
d=d.split(",");
...
})();
您需要將依賴於d的JS放在get回調中。
var d;
$(".circle").click(function() {
var id = $(this).attr('id');
var MyDiv1 = document.getElementById(id);
var name = MyDiv1.innerHTML;
$.get("url", function(data){
d=data;
d=d.split(",");
var arrayLength = d.length;
for (var i = 0; i < arrayLength; i++) {
if(i==id)
custom_alert(d[i], name);
}
});
});
jQuery.get()是異步的,因為它是jQuery.ajax()的縮寫,請求的默認選項是async:true 。
在此處閱讀有關異步請求的信息。
// declare it here if you need its values later (to be a global variable), or move it inside function(){ } declared inside $.get() call.
var d;
$(".circle").click(function() {
var id = $(this).attr('id');
var MyDiv1 = document.getElementById(id);
var name = MyDiv1.innerHTML;
$.get("url", function(data){
d=data;
// $.get has an asynchronous answer (you don't know when it will come or if it comes). Call d.split here
d=d.split(",");
var arrayLength = d.length;
for (var i = 0; i < arrayLength; i++) {
if(i==id)
custom_alert(d[i], name);
}
});
});
您只能依靠d
在為其分配了值的塊中有一個值,該值位於回調function(data){...}
。
var d;
$(".circle").click(function() {
var id = $(this).attr('id');
var MyDiv1 = document.getElementById(id);
var name = MyDiv1.innerHTML;
$.get("url", function(data){
d=data.split(",");
var arrayLength = d.length;
for (var i = 0; i < arrayLength; i++) {
if (i==id)
custom_alert(d[i], name);
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.