【发布时间】:2014-12-04 16:46:44
【问题描述】:
很长一段时间以来,我一直在费解 JavaScript 承诺。我想解决我的代码中异步调用的一些问题,以对其进行去页面化。但是我很想请一位专家来帮助我,因为我已经浪费了很多时间了。
我想为此使用 jQuery Deferreds,因为我已经在我的项目中使用了 jQuery (v1.11),并且我不想再添加任何库(已经有超过 5).我读到 jQuery 并没有完全遵循 Promises/A 规范,但我认为它对于我的用例来说已经足够了。稍后我会查看 q.js 或其他库。
我试图创建一个简单的示例,并且我已经熟悉 JavaScript 的异步行为,如以下 SO 问题所示: setTimeout delay not working
我创建了一个 JS fiddle 来解决该用户的问题,但使用了“厄运金字塔”结构: http://jsfiddle.net/bartvanderwal/31p0w02b/
现在我想要一个很好的简单示例,说明如何使用 Promises 和使用 then() 之类的链接方法调用来展平这个金字塔:
$.when(takeStep())
.then(takeStep())
.then(takeStep())
.then(takeStep())..
但是我无法让它工作。到目前为止,我的尝试是在这个 Fiddle 中: http://jsfiddle.net/bartvanderwal/vhwnj6dh/
编辑 20:58:这是现在工作的小提琴,这要归功于(主要)@Bergi: http://jsfiddle.net/bartvanderwal/h2gccsds/
【问题讨论】:
标签: javascript jquery promise settimeout jquery-deferred