jquerypromise&;如果没有Ajax
我绞尽脑汁想弄清楚这是如何正确使用的。大多数示例都使用ajax,所以这可能根本不可能 在我的示例中,我创建了一个函数,它淡出一个元素。我意识到,jquerypromise&;如果没有Ajax,jquery,promise,.when,Jquery,Promise,.when,我绞尽脑汁想弄清楚这是如何正确使用的。大多数示例都使用ajax,所以这可能根本不可能 在我的示例中,我创建了一个函数,它淡出一个元素。我意识到,.fadeOut可以有回调,但我希望仅出于学习目的避免回调 我读到我需要返回一个承诺,否则$。when().done()会立即启动。即使我附加了一个承诺,它仍然会立即开火 这是我的简单代码 function hide() { return $("#element").fadeOut(250).promise(); } $.when( hide(
.fadeOut
可以有回调,但我希望仅出于学习目的避免回调
我读到我需要返回一个承诺,否则$。when().done()
会立即启动。即使我附加了一个承诺,它仍然会立即开火
这是我的简单代码
function hide() {
return $("#element").fadeOut(250).promise();
}
$.when( hide() ).done(function(){
alert("Hidden");
});
是否有某些方法不能与$.when()
一起使用,例如.fadeOut()
任何有助于理解的东西都会很棒 我不是承诺方面的专家,但你似乎不需要回报承诺
您应该重新安排
.done()
的位置。在hide()
处立即调用函数,无需等待单击$处的事件。当(hide()).done(函数(){alert(“Hidden”);})
var div=$(“”).attr({
id:“元素”
});
$(“按钮”)。在(“单击”,函数(){
$(“#包装”).append(div);
hide().done(函数()){
警惕(“隐藏”);
});
})
函数hide(){
返回$(“#元素”).fadeOut(1000.promise();
}
div{
宽度:100px;
高度:100px;
边框:1px纯黑;
}
点击我
$。延迟的
将非常棒,“即使我附加了一个承诺,它仍然会立即启动。”注意,淡出的持续时间仅为250ms
atjs
;是否尝试增加的持续时间.fadeOut()
?预期的结果是什么?@NorlihazmeyGhazali你能解释一下吗?@guest271314是的,我已经增加到10000毫秒,它仍然会立即开火。按下按钮可触发hide()
函数。我不确定这是否以某种方式导致了问题。如果要向其传递多个参数,则只需在
时使用$。否则,直接对该参数调用.done
。好吧,也许我完全错了。是否$。当()
触发函数时hide()
?调用hide()
触发函数,只是hide()
的返回值是一个延迟对象,它$。当()
接受作为参数时。因此,一些jquery魔法发生了,然后您可以将done
和fail
方法链接到$。当@VIDesignz:“是否$。当()
触发函数hide()
?”您所说的“触发器”是什么意思?您正在(正确地)将调用hide
的返回值传递给$<代码>$。当
对
隐藏
函数本身没有任何作用时。@FelixKling那么他的JSFIDLE如何运行隐藏函数而不调用它呢?@FelixKling我现在明白了,我假设$。when()
可以说更像是一个监听器。正在等待在别处调用hide()
。我没有意识到,hide()。我不知道hide()一下子就被调用了。我假设$when()正在“等待”其他地方调用它。@VIDesignzhide()
在$处调用。when()
,不等待单击处的事件。可以创建一个$.Deferred()
对象,该对象在调用.done()
之前等待延迟解析,但从函数返回jQuery.promise()
对象时不必这样做$.when()
是$.Deferred(beforeStart)
的别名。另请参见,,@VIDesignz:()
在函数引用之后(hide
解析为函数)始终调用该函数。
function hide() {
return $("#element").fadeOut(1000);
}
$.when( hide() ).done(function(){
alert("Hidden");
});