내 문제가 무엇인지 보여주기 위해 예제를 만들었습니다. 코드를 게시하고 설명합니다.함수를 변경하지 않고 비동기 함수 호출
내 JS :
$('#mybtn').on('click', function(){
//$(fn1).promise().done(fn2);
$.Deferred(fn1).then(fn2);
});
function fn1(){
console.log("1");
$.ajax({
url: 'ajax.php',
type: 'POST',
data: {
func: "1"
},
success: function(data){
console.log(data);
}
});
}
function fn2(){
console.log("2");
$.ajax({
url: 'ajax.php',
type: 'POST',
data: {
func: "2"
},
success: function(data){
console.log(data);
}
});
}
내 PHP : 그래서, 내가 마지막에 그들을 위해 함수를 호출하고 기다리는 그 2 가지 방법으로 시도
<?php
$request = $_POST['func'];
switch ($request) {
case '1':
fn1();
break;
case '2':
fn2();
break;
}
function fn1(){
print "1";
sleep(4);
}
function fn2(){
print "2";
sleep(2);
}
?>
, 첫 번째 : // $ (fn1) .promise(). done (fn2); 1, 2, 2, 1을 인쇄하십시오. 둘째 : $ .Deferred (fn1) .then (fn2); print 1, 1, stop, 그냥 fn2를 호출하지 마십시오. 인쇄하고자하는 것은 1, 1, 2, 2입니다. 변수에서 ajax 요청을 반환하는 문제를 해결 한 다음 promise()를 사용합니다. done 그러나 나는 그것을 할 수 없다, 나는 그것을 바꾸지 않고 함수를 기다릴 필요가있다, 가능하다? 이 말은 다음과 같습니다.
toWait.someWayToWait().then(anotherFunctionToWait());
function toWait(){
//whatever code or functions in here.
fn1();
fn2();
fnX();
}
function anotherFunctionToWait(){
//whatever code or functions in here.
}
감사합니다.
각 기능에 대한 콜백을 전달할 수 없습니까? – tymeJV
@ tymeJV 당신이 정확히 이해하지 못했을 겁니다. – Eduardo
'function fn1 (callback) '과 같은 콜백 함수를 참조하십시오. – tymeJV