理解问题-Jquery延迟链接
我希望控制台输出是'B',但我得到'A'。为什么?使用理解问题-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认为一个已解决的承诺总是返回另一个已解决的承诺时,你才能解决一个承诺,这是错
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);
});