理解问题 - Jquery 延迟链接
Understanding Problem - Jquery Deferred chaining
function ajax_call() {
var ajaxCallMock = $.Deferred().resolve('A');
return ajaxCallMock.done(function(response) {
return 'B';
});
}
ajax_call().done(function(response) {
console.log(response);
});
我希望控制台输出为 'B',但我得到 'A'。为什么?
使用 then()
而不是 done()
,因为 done
不是 return 新的承诺。
function ajax_call() {
var ajaxCallMock = $.Deferred().resolve('A');
return ajaxCallMock.then(function(response) {
return 'B';
});
}
ajax_call().then(function(response) {
console.log(response);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
function ajax_call() {
var ajaxCallMock = $.Deferred().resolve('A');
return ajaxCallMock.done(function(response) {
return 'B';
});
}
ajax_call().done(function(response) {
console.log(response);
});
我希望控制台输出为 'B',但我得到 'A'。为什么?
使用 then()
而不是 done()
,因为 done
不是 return 新的承诺。
function ajax_call() {
var ajaxCallMock = $.Deferred().resolve('A');
return ajaxCallMock.then(function(response) {
return 'B';
});
}
ajax_call().then(function(response) {
console.log(response);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>