Jquery 承诺和没有承诺时 Ajax
Jquery Promise & When without Ajax
我正在绞尽脑汁想弄清楚如何正确使用它。大多数示例都使用 ajax,所以这可能是不可能的。
在我的例子中,我创建了一个函数,它淡出一个元素。我知道 .fadeOut
可以有一个回调,但我想避免这种情况只是为了学习目的。
我读到我需要 return 一个承诺,否则 $.when().done()
会立即触发。即使我附加了一个承诺,它仍然会立即触发。
这是我的简单代码
function hide() {
return $("#element").fadeOut(250).promise();
}
$.when( hide() ).done(function(){
alert("Hidden");
});
是否有某些方法不能与 $.when()
一起使用,例如 .fadeOut()
?
任何有助于理解的帮助都会很棒。
我不是 promises 方面的专家,但您似乎不需要 return promise。
https://api.jquery.com/promise/
https://jsfiddle.net/6mLshe77/
function hide() {
return $("#element").fadeOut(1000);
}
$.when( hide() ).done(function(){
alert("Hidden");
});
您应该重新安排 .done()
的位置。 https://jsfiddle.net/6mLshe77/7/ hide()
函数被立即调用,无需等待 $.when( hide() ).done(function(){alert("Hidden");})
的 click
事件
var div = $("<div/>").attr({
id: "element"
});
$("button").on("click", function() {
$("#wrapper").append(div);
hide().done(function() {
alert("Hidden");
});
})
function hide() {
return $("#element").fadeOut(1000).promise();
}
div {
width: 100px;
height: 100px;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="wrapper"></div>
<button>
Click Me
</button>
jsfiddle https://jsfiddle.net/6mLshe77/9/
我正在绞尽脑汁想弄清楚如何正确使用它。大多数示例都使用 ajax,所以这可能是不可能的。
在我的例子中,我创建了一个函数,它淡出一个元素。我知道 .fadeOut
可以有一个回调,但我想避免这种情况只是为了学习目的。
我读到我需要 return 一个承诺,否则 $.when().done()
会立即触发。即使我附加了一个承诺,它仍然会立即触发。
这是我的简单代码
function hide() {
return $("#element").fadeOut(250).promise();
}
$.when( hide() ).done(function(){
alert("Hidden");
});
是否有某些方法不能与 $.when()
一起使用,例如 .fadeOut()
?
任何有助于理解的帮助都会很棒。
我不是 promises 方面的专家,但您似乎不需要 return promise。
https://api.jquery.com/promise/
https://jsfiddle.net/6mLshe77/
function hide() {
return $("#element").fadeOut(1000);
}
$.when( hide() ).done(function(){
alert("Hidden");
});
您应该重新安排 .done()
的位置。 https://jsfiddle.net/6mLshe77/7/ hide()
函数被立即调用,无需等待 $.when( hide() ).done(function(){alert("Hidden");})
click
事件
var div = $("<div/>").attr({
id: "element"
});
$("button").on("click", function() {
$("#wrapper").append(div);
hide().done(function() {
alert("Hidden");
});
})
function hide() {
return $("#element").fadeOut(1000).promise();
}
div {
width: 100px;
height: 100px;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div id="wrapper"></div>
<button>
Click Me
</button>
jsfiddle https://jsfiddle.net/6mLshe77/9/