问题标签 [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 投票
1 回答
851 浏览

python - Twisted Python:如何制作一个等待来自子进程的数据的延迟对象?

在 Echo 协议中的 lineReceived 方法中,我想在每次写入 child 时生成一个延迟对象。它将等待结果,然后在子进程处理完数据后打印结果。我需要找到一种方法来做到这一点。现在,MyPP 的函数 outReceived 从子进程中获取结果。

谢谢你

0 投票
2 回答
8996 浏览

jquery - jQuery 在函数中的 promise with each()

我正在尝试调用自己的函数并等到它完成。过渡结束后,我想开始下一个功能。请看看我的 jsfiddle http://jsfiddle.net/hrm6w/

console.log("upper finished") 应该在 console.log("promise finished") 并且所有动画都结束之后开始。

在每个对象中的所有动画都结束后,我想开始下一个动作(函数)。

我认为 promise() 函数是我所需要的,但我只是没有得到这个工作。

任何帮助,将不胜感激。

0 投票
2 回答
390 浏览

javascript - 与在异步回调链中使用 try catch 块相比,返回异常有什么优势?

在查看了Twisted 的DeferredHeavyLifters Deferred Library之后,我注意到如果先前的结果值是Failure该类的实例,则会触发 errbacks。这让我开始思考:是否有任何特殊原因返回一个特殊对象来表示错误,而不是仅仅抛出一个错误。

根据我的推断,我觉得最好抛出错误,因为:

  1. 可以抛出任何值。
  2. 如果抛出的值没有被捕获,它会向上传播调用堆栈。
  3. 不需要特殊FailureError课程。
  4. 它使回调看起来更像同步代码。
  5. 可以在调用堆栈的任何级别处理异常。

我注意到的一些缺点是:

  1. 尝试代码块并捕获错误可能会导致代码性能下降。
  2. 如果未捕获到异常,则它会停止执行回调链的其余部分。
  3. 与使用 try catch 块相反,异步编程是必不可少的。

我正在尝试权衡可能性并找出哪种报告错误的方法更适合这种情况。

0 投票
3 回答
13563 浏览

javascript - 自定义 javascript 函数中的成功处理

如果我进行 ajax 调用,我可以添加成功处理。我想为我的自定义函数添加类似的逻辑。

我有 6-10 个必须按顺序或独立运行的自定义函数。它们通常不会独立运行,因此我现在通过在前一个函数的末尾调用下一个函数将它们以菊花链形式连接起来,但这读起来很麻烦,并且不允许单独执行。

我很想拥有这样的东西:

我有过其他情况,我想为.success()自定义函数添加处理,但这种情况使它变得更加重要。

如果有另一种方法可以强制 6-10 个函数同步运行,那可以解决这个问题,但我也想知道如何将成功处理添加到我的自定义函数中。

我根据@lanzz 的建议尝试了以下方法:

我添加.then()到我的功能:

代码正确地转到 updateGridRow 的末尾,没有给出错误,但永远不会返回调用第二个函数。

我还按照@Anand 的建议尝试了以下操作:

这没有用。

最终解决方案
有关如何使用 deferred 并使其工作的详细说明,请参见此处: 在 jQuery 中使用 Deferred

0 投票
2 回答
1675 浏览

javascript - 如何使用 dojo 优雅地构建请求/回调链?

我已经使用过很多dojo,但并没有完全理解dojo.Deferred(或者至少我没有使用所有可用的功能)。我一直在阅读它,并想知道以下场景是否适合使用 Deferred 作为更优雅的方法?或者,如果不是 Deferred,Promisedojo 中是否有其他类型的链接技术可以以更具可读性/顺序性的方式实现以下目标?

如果是这样,这看起来如何?Deferred 在这里如何使用?任何帮助将不胜感激。

0 投票
0 回答
442 浏览

jquery - jQuery.Deferred().done/fail/always/then 的开销?

我有很多地方想确保promise已解决给定的问题,例如:

我可能会收到数千个done类似上述的调用,即使在调用时也已经解决了承诺getData()。如果我使用这样的延迟回调,开销是多少?

据我所见,Deferred()它是基于jQuery.Callbacks()内存的,似乎在已解决或被拒绝的承诺上添加处理程序不会将回调添加到任何地方的任何队列,而只是立即调用(或转储)它(取决于结束状态)。但是这样做是最好的做法吗?

0 投票
2 回答
212 浏览

javascript - 如何从 done() 函数中的 .ajax 请求访问返回值

这是我的函数,它返回一个人的名字。

这是我尝试使用 .done() 函数的地方。

我对如何在我的完成函数中引用我的 getName 函数的返回值感到困惑。

我知道我可以使用 success: 在 .ajax 中做到这一点,但我正试图摆脱它并使用延迟对象。

谢谢!

0 投票
0 回答
396 浏览

c# - 为什么延迟照明会破坏 FPS?(2D)

为什么延迟照明会破坏 FPS?我尝试在我的地图的可视空间上放置大约 20-26 个延迟照明,它将 fps 从 61 降低到 28-31。

它还使我的 VGA 温度从 68°C 上升到 72-73°C。我觉得这有点奇怪,因为它只是 2D。而且我认为将我的 FPS 减半不应该是这么多的计算。

所以基本上我不明白为什么这种方法要花这么多钱。或者我的代码有问题以及我如何尝试解决它?

还有没有其他好的照明方法,比这个成本低得多?点灯?

我的代码是:

和着色器:

0 投票
1 回答
1615 浏览

javascript - jQuery何时/完成序列中的竞争条件?

我有一个基于 apache、php、js/jquery 的网络应用程序。加载文档时初始化应用程序的一个模块。该序列调用一个执行许多任务的 init() 函数,除其他外,它通过 ajax 获取两个 html 对话框并将它们插入到现有页面中。对这些对话框的引用保存为变量,因此我不必在整个脚本中指定 jquery 选择器,而是可以简单地使用这些变量。这工作正常,除了在尝试将处理程序绑定到获取的对话框内的元素时变量“未定义”的情况很少(偶尔......)。这很奇怪,因为除了绑定之外,对话框在整个应用程序中都是可用的。这表明 ajax 调用成功,但显然存在某种竞争条件,绑定尝试之后。

根据我的理解,这不应该发生,因为绑定是在 when() 的 .done() 部分完成的,并且只能在对话框的 ajax 检索在 when() 内完成后执行。

显然我在这里遗漏了一些基本的东西。有人对我有提示吗?

以下引用了工作实现的代码摘录。它们可能作为某些部分在语法上看起来无效,但这只是由于删除了与此处无关的代码部分。未缩短的代码工作正常。

变量:

初始化顺序:

缩短的初始化函数:


随着Bergi的回答,我设法显然消除了原来的问题。到目前为止,我无法检测到更多失败的绑定尝试。但是我不能完全遵循这个建议:在他的回答中,他建议删除初始化方法中的 switch 语句以支持直接分配。这当然要优雅得多,但这行不通。我的印象是我对 javascript 如何处理存储在变量中的引用和/或函数存在一些误解。

也许您、Bergi 或其他人可以对此做出一些解释:

这是上面修改后的初始化方法:

在中间,您会看到赋值语句被注释掉并且当前被下面的 switch 语句替换。我尝试了几种变体,例如 obj.element 等,但都失败了。在函数之外,变量 Shorty.Tracking.Dialog.List 和 Shorty.Tracking.-Dialog.Click 保持为空。

我是 web 东西和 js/jquery 的绝对新手。但我当然很想了解更多关于这种处理引用的方式。

0 投票
4 回答
27504 浏览

c# - List.AddRange 与 IEnumerable参数不起作用?

我有以下场景,我想将一些项目添加到列表中......

使用此代码,不会将任何项目添加到列表中,但如果我在 Linq 语句之后添加 .ToList() 则项目会正确添加。我猜这是由于延迟执行,但我会认为给定 List.AddRange 函数接受一个 IEnumerable ,它将枚举要添加的项目。

有人可以澄清为什么会这样吗?