아약스를 동기화하는 방법은 무엇입니까?
이것으로 어떻게 기능을 만들 수 있습니까?
//check if station is alive
$.ajax({
url: "lib/grab.php",
data: "check_live=1&stream_url="+valueSelected,
type: "GET",
success: function (resp) {
if (resp == 1) {
play_this(valueSelected);
} else {
//
}
},
error: function (e) {
console.dir(e);
}
});
저는 제가 다음과 같은 것을 할 수 있다고 생각했습니다.
function is_alive(valueSelected) {
result = false;
//check if station is alive
$.ajax({
url: "lib/grab.php",
data: "check_live=1&stream_url="+valueSelected,
type: "GET",
success: function (resp) {
if (resp == 1) {
result = true;
} else {
//
}
},
error: function (e) {
console.dir(e);
}
});
return result;
}
그러나 분명히 Ajax 호출의 비동기적 특성으로 인해 결과는 항상 false를 반환합니다.
이 상황에 대처하는 요령은 무엇입니까?
효과가 있는 것 같습니다.
//check if station is alive
function is_alive(url) {
//
var result = false;
//
return $.ajax({
url: "lib/grab.php",
data: "check_live=1&stream_url="+url,
type: "GET",
success: function (resp) {
if (resp == 1) {
//
result = true;
//
}
},
error: function (e) {
console.dir(e);
}
}).then(function() {
return $.Deferred(function(def) {
def.resolveWith({},[result,url]);
}).promise();
});
}
그리고 이렇게 부릅니다.
//Change song on select, works both for fav and station lists
$(document).on("click", ".ui-listview li a", function(){
var valueSelected = $(this).data("station-url");
//
is_alive(valueSelected).done(function(result,url){
if (result) {
//
play_this(valueSelected);
//
}
});
});
유용한 기능을 만들기 위해 동기화할 필요는 없습니다.
function is_alive(valueSelected) {
//check if station is alive
return $.ajax({
url: "lib/grab.php",
data: "check_live=1&stream_url=" + valueSelected,
type: "GET",
error: function (e) {
console.dir(e);
}
});
}
is_alive(somevalue).then(function(result){
console.log(result, somevalue);
});
비동기: false 옵션을 제공할 수 있습니다.
function is_alive(valueSelected) {
result = false;
//check if station is alive
$.ajax({
async: false,
url: "lib/grab.php",
data: "check_live=1&stream_url="+valueSelected,
type: "GET",
success: function (resp) {
if (resp == 1) {
result = true;
} else {
//
}
},
error: function (e) {
console.dir(e);
}
});
return result;
}
언급URL : https://stackoverflow.com/questions/19301863/how-to-make-ajax-synchronous
'programing' 카테고리의 다른 글
Android 설정 방법_우분투의 홈 경로? (0) | 2023.08.22 |
---|---|
첨부 파일에 대한 HTTP 응답 헤더 내용 처리 (0) | 2023.08.22 |
Android Alert Dialog에서 목록 보기를 표시하려면 어떻게 해야 합니까? (0) | 2023.08.22 |
도커-다운로드 default_network 오류 (0) | 2023.08.22 |
실행 파일이 잘못된 사용 권한으로 서명되었습니다. (0) | 2023.08.22 |