1
을 반환하지 : Chain tasks.체인화 JQuery와 deferred.then() 나는 JQuery와 deferred.then에서() 문서 샘플 코드를 찍은 적절한 약속
내가 찾은 문제는 chained.done
핸들러입니다, 모든 요구가 끝나면 내가 이해하는 것으로부터 전화해야합니다. 대신 첫 번째 요청이 완료되면 처리기가 실행되고이 요청에서 페이로드가 검색됩니다.
var request = $.ajax("http://www.json-generator.com/j/bPyGnSXXTm", {
dataType: "json",
crossDomain: true
}),
chained = request.then(function (data) {
console.log('First call, data:', data);
$('body').append('<p>' + 'First call, data: ' + JSON.stringify(data) + '</p>');
return $.ajax(data[0].url, {
crossDomain: true
});
});
chained.done(function (data) {
// data retrieved from url2 as provided by the first request
console.log('Second call, data:', data);
$('body').append('<p>' + 'Second call, data: ' + JSON.stringify(data) + '</p>');
});
당신은 jsfiddle here을 찾을 수 있습니다
이
내가 사용하고 코드입니다.또한 콘솔을 열어 두 번째 요청 (처리기 XMLHttpRequests 활성화) 전에 처리기가 실행되고 있는지 확인할 수 있습니다.
내 이해에 따라 chained
은 request
의 값을 얻고 있으며 $.ajax
의 값은 반환하지 않습니다. jQuery를 사용
은 여전히 첫 번째 호출 –
@A입니다 .wolff 내 코드가 jquey 문서에서 복제했는데, 변수'chained'가 request.then 함수에 할당되었습니다. 아마 여러분의 의견을 이해할 수 없을 것입니다 ... 조금 더 자세히 설명해 주시겠습니까? 고맙습니다! –
좋아, 'then'은 jQuery 1.8.x (?) 이전에 버그가있었습니다. AFAIK, jQuery를 1.8로 업그레이드하거나 then() 파이프 대신 pipe()를 사용해야합니다. http://jsfiddle.net/nGthY/2/또는 jQuery 1.8 http://jsfiddle.net/nGthY/3/ –