问题标签 [deferred-execution]

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 回答
314 浏览

python - 为什么不能将 Deferred 传递给 Python Twisted 中的回调?

为什么是这样?我查看了代码并提交消息/ Trac 并没有看到为什么会这样。绕过这个最明显的方法是把 放在Deferred一个元组中,但为什么这个限制首先在这里呢?

0 投票
1 回答
483 浏览

c# - 如何使用委托和/或事件推迟集合中每个项目的事件执行,直到集合迭代完成?

注意:这更像是一个好奇的问题。

鉴于List<Window>每个窗口都有一个附加到关闭事件的事件,该事件从集合中删除窗口,您如何使用委托/事件来推迟关闭事件的执行,直到集合被迭代?

例如:

具体来说,在该CloseAllWindows()方法中,如何迭代集合以调用 close 事件,但将引发的事件推迟到集合完全迭代?

0 投票
2 回答
1061 浏览

c# - 调试时如何评估延迟的 Linq 语句?

我在 VS2010 中调试,我想检查一个字符串值,但我可以让调试器向我展示(通过手表、悬停、本地等)是:

我不在乎是否存在过早评估或其他任何副作用,我只想看看如果我现在在当前断点处评估它,表达式会评估什么。

这是怎么做到的?我还可以更改我的代码以使其更早评估吗?当我不调试时,我不在乎……只是想知道。

如果它是相关的......(我对此表示怀疑。)我正在填充一个新的实体对象,然后将其保存到数据库中......某些字段分配有 LINQ 语句,我不确定它们何时在EF的封面。数据库更新失败,'字符串或二进制数据将被截断......所以我试图找到太长的字段。

0 投票
3 回答
4181 浏览

c# - 在 lock 语句中 yield 返回

如果我在 lock 语句中有一个 yield return ,是在每个 yield 上取出锁(在下面的示例中为 5 次)还是只为列表中的所有项目取出一次?

谢谢

0 投票
2 回答
307 浏览

linq-to-sql - 我如何模拟或测试我的延迟评估/执行功能?

我有一个奇怪的混合IQueryable<T>IList<T>域对象集合传递到我的应用程序堆栈。我试图尽可能多地维护“延迟查询”或“延迟加载”。我通过两种方式做到这一点:

  1. 通过使用 LinqToSql 数据层并将IQueryable<T>s 通过存储库传递到我的应用程序层。
  2. 然后在我的应用程序层传递IList<T>s 但对象/聚合图中的某些元素与委托“链接”后,以延迟它们的加载。有时甚至委托内容也依赖于IQueryable<T>源并且DataContext被注入。

到目前为止,这对我有用。

令人眼花缭乱的困难在于证明这种设计确实有效。IE。如果我在某个地方击败了“懒惰”部分并且我的评估/执行发生得早,那么整个事情就是浪费时间。我希望能够以某种方式对此进行 TDD。

我不太了解委托或线程安全,因为它适用于在同一源上操作的委托。我希望能够模拟DataContext并以某种方式跟踪延迟(IQueryable<T>的 SQL 和委托)加载的两种方法,以便我可以进行测试证明这两个函数在应用程序/堆栈的不同级别/层上工作.

由于延迟工作对于设计具有任何价值至关重要,所以我希望看到当我在给定级别(与实时实现分开)破坏设计时测试失败。这可能吗?

0 投票
2 回答
727 浏览

sql-server-2005 - 子 sProc 无法引用在父 sProc 中创建的本地临时表

在我们的生产 SQL2000 实例上,我们有一个包含数百个存储过程的数据库,其中许多使用在代码中“早期”创建#TEMP 表的技术,然后各种内部存储过程由该父 sProc 执行。在 SQL2000 中,内部或“子”sProc 插入到#TEMP 或从#TEMP 中选择数据没有问题。简而言之,我假设他们都可以引用这个#TEMP,因为他们使用相同的连接。

在使用 SQL2008 进行测试时,我发现了两种不同行为的表现形式。首先,在设计时,新的“智能感知”功能在子 sProc 的 Management Studio EDIT 中抱怨 #TEMP 是“无效的对象名称”。但更糟糕的是,在执行时,调用的父 sProc 在嵌套的子 sProc 内失败。

有人建议解决方案是更改为##TEMP,这显然是一个全局临时表,可以从不同的连接中引用。

从追踪所有问题点的工作量以及从 Web 应用程序调用这些 sProcs(即多用户问题)时可能/可能的不良影响来看,这似乎过于激烈。

这确实是 SQL2005 或 SQL2008 关于#TEMP(本地临时表)的行为变化吗?我们跳过了 2005 年,但我想更准确地了解为什么会发生这种情况,然后再开始尝试破解所需的修复程序。谢谢。

0 投票
3 回答
724 浏览

linq - 延迟执行列表使用 Linq

假设我有一个List<T>包含 1000 个项目的项目。

然后我将其传递给过滤此列表的方法。当它通过各种情况(例如可能有 50 种情况)时,List<T>可能有多达 50 种不同的 LinqWhere()操作对其执行。

我对尽可能快的运行很感兴趣。因此,我不希望List<T>每次Where()对其执行 a 时都对其进行过滤。

本质上,我需要它来推迟对 的实际操作,List<T>直到应用了所有过滤器。

这是由编译器本地完成的吗?或者只是当我在返回的 IEnumerable 上调用 .ToList() 时List<T>.Where(),还是应该Where()对 X 执行操作(其中 X = List.AsQueryable())?

希望这是有道理的。

0 投票
3 回答
2730 浏览

c# - linq 查询中的垃圾收集

我有一个关于如何在 linq 查询中处理垃圾收集的问题。假设给了我一个要处理的请求列表。每个请求都会生成一组非常大的数据,但随后会应用一个过滤器来仅保留来自每个请求负载的关键数据。

所以我知道查询被推迟到每个数据项,直到每个过滤的数据项被请求,所以这很好。但是那个中等记忆强度的部分会一直持续到可枚举完成吗?

我希望发生的是每个数据元素一旦通过过滤阶段就可以被垃圾收集,从而确保我有足够的内存来处理整个列表。是这种情况,还是中间可枚举保留所有内容直到整个查询结束?如果是这样,有没有一种 linq 方法来处理这个问题?


注意: Process() 函数会生成内存密集型数据……这就是我担心的

0 投票
1 回答
304 浏览

optimization - 如何解释这个执行计划(IN vs EXISTS)?

从执行计划看来,IN 版本比 EXISTS 版本快

我认为 EXISTS 查询更快,因为它急切地检查条件。IN 查询虽然看起来很直观,但我觉得它似乎很晚才解决最终条件的结果;也就是说,从内到外,我认为 IN 较慢,因为下一个条件需要等待其内部条件的结果。

虽然从下面的执行计划来看,IN 更快;它的成本更低。

我有一部分想使用 IN 版本,对于下一个维护者来说它看起来简单直观,下面的执行计划似乎表明它比 EXISTS 更快。但我的另一部分是想使用 EXISTS,因为我只是觉得它更快,但下面的执行计划似乎与这种看法相矛盾。

下面两个查询哪个更快,是 IN 版本还是 EXISTS 版本?

在版本:

存在版本:

这是我最终使用的最后一个查询,IN版本。我只能感知 IN 和 EXISTS 版本之间的边际性能差异。我正在考虑更多关于下一个维护者的可读性,因此我使用了IN

0 投票
2 回答
1166 浏览

c# - Linq:Xml 到 IEnumerable> 延期执行?

Roles我正在尝试将以下内容拉出IEnumerable<KeyValuePair<int, string>>

我的问题是关于延迟执行这个 Linq 语句。据我了解,当我返回此 ProjectContact 时,Linq 语句尚未执行。有没有办法强制执行这个语句,以便它发生在这个方法中,而不是当有人试图访问角色时?我想我可以通过调用 .Count() 来强制执行该语句,但似乎应该有更好的方法。