我希望do_this_after()仅在slow_running()完成后才能运行。当我单击按钮时,期望的结果是出现1,然后在SlideUp完成后出现2。
不幸的是,甚至我的代码片段都在出错(!),但我希望它能帮助说明我正在尝试实现的目标。
PS我仅使用slideUp作为一些需要一些时间才能执行的代码的示例,我希望能够将任何运行缓慢的代码放入slow_running()中,并使用promises(而不是回调)来具有do_this_after()等到slow_running()完成。
我需要支持IE。
function slow_running() {
$("#result").append("1<br />");
$('#slow_thing').slideUp('slow');
return true
};
function do_this_after() {
$("#result").append("2<br />");
};
$(document.body).on('click', "#go", function() {
slow_running().then(do_this_after());
});
<div class="alert alert-success" id="slow_thing">
Only once this has gone should 2 appear
</div>
<div id="result"></div>
<hr />
<span class="btn btn-primary" id="go">Promises go!</span>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>