协助履行承诺

时间:2020-05-26 17:20:12

标签: javascript deferred

我希望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>

0 个答案:

没有答案