当ajax完成时,我可以使用done,error,always deferred方法。
但我可以这样做,因为jqXHR
对象是从Deferred对象派生的。
但是我怎么能在这个简单的例子中模仿这种行为:
我有一个名为t
的变量。
我希望在t
得到它的值时调用done函数。
像这样:( psuedo )
var t;
setTimeout(function (){t=100;},3000);
t.done(function (){alert('');}); //im expecting this alert after 3 seconds.
我该怎么做?
P.S。我知道我可以在回调函数中调用警报(显然)。但又来了。我想应用延期行为
答案 0 :(得分:1)
您不能只使用您指定的变量。相反,请手动创建jQuery.Deferred
object,然后.resolve()
:
var t = new $.Deferred();
setTimeout(function() {
t.resolve(100);
}, 3000);
t.done(function(val) {
alert(val);
}); // this will alert "100" after 3 seconds