[英]Handling jQuery deferred.done being called even though request is aborted?
我正在编写一个对Web服务进行http调用,获取一些数据并基于此数据调用另一个函数的函数。 如果服务关闭,则不应调用第二个函数。 我认为这样做的明显方法是写$.when(func1()).done(func2);
但这将触发func2,即使请求中止也是如此。 我意识到我可以通过在func1的$.getJSON
方法的成功函数中调用func2来解决该问题,但我想尽可能使用延迟语法。 谁能建议如何以与延迟对象语法一致的方式处理此问题?
function checker() {
console.log("in checker");
$.getJSON("http://djdjdjdjdjinvalidUrl.dkdkdk", function(data) {
console.log("in success function");
});
}
function crosser(data) {
console.log("in crosser");
}
$(document).ready(function(){
$.when(checker()).done(crosser);
});
有关实际示例,请参见jsFiddle 。
对于$.getJSON
类的异步事件,您需要使用实际的延迟对象 。 我已经使用了该对象来更新您的jsfiddle: http : //jsfiddle.net/wM7aP/1/
码:
function checker() {
var dfd = new jQuery.Deferred();
console.log("in checker");
$.getJSON("http://djdjdjdjdjinvalidUrl.dkdkdk", function(data) {
//handle data here
dfd.resolve( "hurray" );
});
return dfd.promise();
}
function crosser(data) {
console.log("in crosser");
}
$(document).ready(function(){
$.when(checker()).done(crosser);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.