Jquery 我们为什么要延期返回
在上面的代码中,我们为什么要返回Jquery 我们为什么要延期返回,jquery,Jquery,在上面的代码中,我们为什么要返回deferred.promise()?假设删除第#3行,则会出现如下错误: TypeError:承诺未定义 它应该返回到第1行或第2行。为什么我们需要第三行第三行有什么用 如果在第1行或第2行正确返回,那么第3行有什么用 不要在$.ajax的回调中返回任何内容,因为在ajax请求中上下文是“窗口”。您可以尝试以下操作: function process() { var deferred = $.Deferred(); var url = "htt
deferred.promise()
?假设删除第#3行,则会出现如下错误:
TypeError:承诺未定义
它应该返回到第1行
或第2行
。为什么我们需要第三行
第三行有什么用
如果在第1行或第2行正确返回,那么第3行有什么用
不要在$.ajax的回调中返回任何内容,因为在ajax请求中上下文是“窗口”。您可以尝试以下操作:
function process() {
var deferred = $.Deferred();
var url = "https://maps.googleapis.com/maps/api/geocode/json";
$.ajax({
url: url,
data: {},
success: function(data){
deferred.resolve(); // line:1
},
error: function(data){
deferred.reject(); // line:2
}
});
return deferred; // line:3
}
这是对您的示例的模拟
function process() {
var deferred = $.Deferred();
var url = "https://maps.googleapis.com/maps/api/geocode/json";
$.ajax({
url: url,
data: {},
success: function(data){
deferred.resolve(); // line:1
},
error: function(data){
deferred.reject(); // line:2
}
});
return deferred; // line:3
}
function sync(){
var promise = process();
promise.done(function() {
alert('done.');
});
promise.fail(function() {
alert('fail.');
});
}
function process() {
var deferred = $.Deferred();
var url = "https://maps.googleapis.com/maps/api/geocode/json";
setTimeout(function(){
if(true){
deferred.resolve();
}
},3000);
return deferred; // line:3
}