理解问题-Jquery延迟链接

理解问题-Jquery延迟链接,jquery,promise,deferred,Jquery,Promise,Deferred,我希望控制台输出是'B',但我得到'A'。为什么?使用then()而不是done(),因为done不会返回新的承诺 函数ajax\u call(){ var ajaxCallMock=$.Deferred().resolve('A'); 返回ajaxCallMock.then(函数(响应){ 返回“B”; }); } ajax_call().then(函数(响应){ 控制台日志(响应); }); 因为只有在AFAIKI认为一个已解决的承诺总是返回另一个已解决的承诺时,你才能解决一个承诺,这是错

我希望控制台输出是'B',但我得到'A'。为什么?

使用
then()
而不是
done()
,因为
done
不会返回新的承诺

函数ajax\u call(){
var ajaxCallMock=$.Deferred().resolve('A');
返回ajaxCallMock.then(函数(响应){
返回“B”;
});
}
ajax_call().then(函数(响应){
控制台日志(响应);
});

因为只有在AFAIKI认为一个已解决的承诺总是返回另一个已解决的承诺时,你才能解决一个承诺,这是错误的吗?哦,我错过了
done
部分,sorryjQuery的
。done()
不是
的同义词。then()
。很少有情况会使用
.done()
。我可以简单地替换
var ajaxCallMock=$.Deferred().resolve('A')$.get()
Ajax调用执行code>?然后仍然使用
function ajax_call() {

    var ajaxCallMock = $.Deferred().resolve('A');

    return ajaxCallMock.done(function(response) {

            return 'B';

    });
}



ajax_call().done(function(response) {
    console.log(response);
});