问题标签 [deferred]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1174 浏览

jquery - 使用jQuery延迟管道最简洁的方法是什么?

我正在设计一个包装我的 REST API 的 javascript API。我通常希望避免大量冗长和令人困惑的嵌套回调,并且一直在阅读延迟 jQuery 的优点。

让我们想象一下我的库“myLib”,它代表人物对象和在人物对象之间遍历的方式。它有一堆方法,如“爸爸”、“老板”、“助理”等,需要执行 ajax 请求来查找一些数据并返回另一个相关的“人”对象。但我希望他们返回一个延迟对象,该对象也有 myLib 的方法,我可以将它们链接在一起,编写非常简洁的简单代码,如下所示:

这将创建一个“我”人对象,然后执行第一个 ajax 调用以查找我的详细信息,然后使用该数据进行另一个调用以查找我的父母,然后再次查找我的老板,然后另一个查找助手,然后最后将其传递给我的回调并由我处理。有点像 jQuery 的链式遍历方法,但是是异步的。

当链中的最后一个 Deferred 对象被解析时,在任何时候传入一个函数,但通常是最后一个方法,将在内部被调用。第二个函数是失败回调,如果链中的任何延迟对象被拒绝,则调用该函数。

我在想我需要创建一个 jQuery 延迟对象,然后扩展它,但不确定这是否是“最佳”方式。

那么实现我的极简 API 目标的最佳实践方式是什么?基本上我希望所有方法名称在域问题名称空间中都是 100%,并且不会被大量的“何时”、“完成”、“成功”等污染。

有没有我可以在某处模拟的类似干净 API 的例子?

0 投票
1 回答
1023 浏览

jquery - jQuery 延迟链

我希望在循环一组元素时创建一个动画链;当第一步的动画完成时,将调用下一个循环步骤。链条是这样的:

第 1 步(在元素 A 上工作)
更改背景颜色
更改字体颜色
(-> 触发第 2 步)
再次更改背景颜色再次
更改字体颜色

第 2 步(在元素 B 上工作)
更改背景颜色
更改字体颜色
等待 1 秒
再次更改背景颜色再次
更改字体颜色
-> 触发 resolve()

我写了这个:

我希望“console.log('done')”只写在所有管道中..但是动画都没有开始!

怎么了?

(对不起我糟糕的英语,你可以理解我要编码的内容)。

0 投票
1 回答
728 浏览

python - 如何在扭曲的延迟回调中捕获异常?

函数 nextCall - 从不调用。那么我能找到我的 ValueError 吗?

谢谢。

0 投票
3 回答
1371 浏览

javascript - 将回调附加到发布

我想知道是否有人知道在发布的事件完成时将事件/回调附加到 dojo 发布的方法。

我将某些内容作为委托任务发布,当委托任务完成时,我想进行一些 UI 更改。

如果你知道怎么做,或者你知道这是不可能的,请告诉我。


编辑:我想如果我能够在事件发布完成后向发布者返回一个值,我也可以做我想做的事。

0 投票
3 回答
4818 浏览

javascript - Deferred 对象和它自己的 Promise 对象有什么区别?

让我们创建一个简单的 Deferred 对象:

上述 Deferred 对象将处于“pending”状态 3 秒,然后切换到“resolved”状态(此时将调用与其绑定的所有回调)。

让我们也检索该 Deferred 对象的承诺:

现在,要添加在 Deferred 对象被解析后将被调用的回调,我们可以使用.done()or .then()。但是,我们可以在 Deferred 对象本身或它自己的 Promise 对象上调用此方法

或者

在这两种情况下,handler都会调用该函数(在这种情况下是 3 秒后)。

如果我们使用$.when,我们可以再次传递 Deferred 对象本身或其承诺对象:

或者

同样,上述两行代码之间没有区别。

现场演示:http: //jsfiddle.net/G6Ad6/

所以,我的问题是,既然我们可以在 Deferred 对象本身上调用.then(),.done()等,并且因为我们可以将该 Deferred 对象传递给$.when(),那么.promise()检索 Promise 对象的意义何在?承诺对象的目的是什么?为什么在功能上有这种冗余?

0 投票
2 回答
1645 浏览

django - QuerySet 使用 only() 来获取引用而不延迟

考虑以下:

only()使所有其他字段延迟。然而AFAICT,虽然我要求foreign_key1不要被推迟,但它是!并且列表理解需要很长时间,因为每次迭代都会命中两次数据库。

我也在查询集中尝试过foreign_key1__id,但没有帮助。如何在使用时不延迟外键only()

0 投票
1 回答
707 浏览

jquery - 如何在什么情况下使用“队列”或“延迟”?他们的设计目的是什么?

我很困惑,动画的“队列”和“ajax”的延迟?谁能告诉我一些典型的例子?

0 投票
1 回答
1345 浏览

python - Twisted:如何从失败中获取错误参数?

我有一段代码:

newEb 中提出的方法是从失败中提取错误参数的唯一方法吗?当我使用 failure.trap 或 failure.check 时,我无法收到错误实例。

0 投票
2 回答
106 浏览

jquery - 使用 .load() 和/或 ajax 堆栈延迟

我有一个带有产品下拉列表和两组过滤器的网页:类型(教育、游戏)和媒体(书籍、CD)。您可以随时从任一过滤器中进行选择,下拉菜单将通过 ajax 进行相应的过滤。这一切都很好。

当您选择一个过滤器时,一个 throbber 会显示在下拉列表中,直到 ajax 解析。问题是,如果您在完成解析之前多次更改过滤器,则第一个请求会删除 throbber 并在第二个请求仍在进行时再次显示下拉列表。这是我想解决的一个小问题。这是javascript:

显然,同时一个单选按钮发生了变化,第一个.load()将在另一个完成之前解析、显示列表并隐藏 throbber。我可以做这样的事情:

但是,Deferred我觉得必须有一种更清洁的方式。有没有办法将请求添加到当前的延迟堆栈并等待它们全部解决(它们可以在任意时间添加)。我也注意到这.load().then()似乎不起作用。完全可以Deferred.load()吗?我使用.load()是因为你可以指定只返回的 DOM 元素,这很方便。如果没有,是否有任何其他方法来管理当前的 ajax 请求并仅在它们一次全部完成时才执行操作?

0 投票
2 回答
1562 浏览

javascript - 加载页面后加载 javascript

我已经阅读了很多主题并尝试了很多东西,但我无法得到我想要的东西。我只是在页面末尾移动了我的 js 代码,现在我得到了一些错误。

这是我的页面的样子:

在 fonctions.js 我有我的 google adsense 代码:

想法是只在一个地方为 adsense 提供相同的代码,但我无法在文件 fonctions.js 之后加载它

我试过 defer="defer", window.onload ...

有任何想法吗?谢谢

我在 Firebug 中收到此错误:错误:未定义 adsense

PS:我想避免使用Jquery(避免使页面太大)

更新:

在 fonctions.js 中,如果我输入以下代码,则会显示“ok”:

但是,如果我有此代码,则不会显示广告:

我的猜测是这是谷歌的问题......无法以这种方式加载代码......?如果我将 adsense 代码放在页面中(在调用下方 - 你在哪里执行alert('here');)它会很好地显示......所以我的 adsense 代码是正确的

更新:我终于改变了解决方案,我将代码放在一个 .html 文件中,并使用 php 包含它。所以它不再在我的js文件中了。还是要谢谢你的帮助。