问题标签 [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.
events - 什么是浏览器事件循环?
我一直在使用 GWT 进行一些 Web 应用程序编程,并且对“浏览器事件循环”这个术语感到困惑。
我遇到过需要在浏览器事件循环完成后执行延迟命令和“做某事”的情况。
我想知道它到底是什么以及在事件循环过程中发生了什么以及以什么顺序?
c# - 内置延迟执行的.Net IEnumerable 类?
我正要构建自己的 IEnumerable 类,该类在第一次迭代它时对所有项目执行一些操作,然后我开始想,框架是否已经有我可以使用的东西?
这是我正在构建的内容,因此您知道我在寻找什么:
javascript - 完成/后处理链式方法
假设我有一个类似数组的对象,它允许像这样链接方法:
有没有办法在处理完链中的最后一个方法后执行代码- 无需手动附加单独的.finalize()
(或end
// execute
...)方法调用?
我相信我以前在某个地方见过这个,但我不记得细节了。也许 futures/promises/deferreds 在这里会用到——但我真的不知道怎么用,因为我总是需要“展望未来”来确定方法调用是否是链中的最后一个。
c# - 将 Linq 查询放在方法中会影响延迟执行吗?
直到实际迭代查询返回的序列后,才执行 Linq 查询。
我有一个重复使用的查询,所以我将把它封装在一个方法中。我想知道它是否会干扰延迟执行。
如果我将 Linq 查询封装到如下所示的方法中,则查询将在第 2 行执行,而不是在调用该方法的第 1 行。这个对吗?
PS 我正在使用 Linq-To-EF,如果它有什么不同的话。
c# - 为什么在 c# 中使用“yield”关键字延迟执行会有不同的运行时行为?
如果您IgnoreNullItems
在下面的示例代码中调用扩展方法,则延迟执行会按预期工作,但是在使用时IgnoreNullItemsHavingDifferentBehaviour
会立即引发异常。为什么?
感谢您分享您的想法!
拉斐尔·扎格特
这是具有相同行为的版本:
这是一个显示相同行为的版本。在这种情况下,不要让 resharper “改进”您的 foreach 语句;) --> resharper 使用 return 语句将 foreach 更改为“IgnoreNullItemsHavingDifferentBehaviour”版本。
jquery - 了解 jQuery Deferred.pipe()
我正在尝试为以下场景实现 jQuery Deferred.pipe() 方法:
- 通过 $.ajax() 在数据库中添加用户
- 获取用户是否正确添加的响应。
- 如果添加成功,通过 $.ajax() 从服务器获取所有用户列表
- 通过 jQuery 模板显示列表
这是我尝试过的东西:
但这不起作用。我知道有什么遗漏或错误。有什么帮助吗?
c# - 是否会先调用 Dispose 并在延迟执行的情况下导致失败?
有两种方法,其中一种在using
语句中使用 LINQ 返回数据。我想知道查询是否有可能抛出某种异常,因为查询执行被延迟并且它正在使用的变量已经被释放?
}
顺便说一句,它一定已经以某种形式被问过了,但我找不到明显的候选人。所以不要用力踢我:)
c# - 使用延迟执行和延迟加载获取 Count()
我有一些使用延迟执行和延迟加载的代码:
我正在寻找对元素数量的简单计数。我们正在使用的当前代码是:
我可以改进这个吗?
或者这会导致在获取计数时使用更多内存?在某些情况下,我们正在处理非常大的文件,并试图尽可能将内存使用量保持在最低限度。
我试图找到一个具体的例子来解释在每种情况下如何使用内存,但没有成功。
提前感谢您的帮助。
c# - 延迟执行与 ToList 给出不同的结果
我正在对我编写的用于搜索可查询项目的函数进行单元测试。我只是断言我得到了 1 件物品,如果该方法有效,我应该得到它。但我得到了 0 件物品。在我的方法中,我使用延迟执行并ToList
在返回之前使用。但是,如果我改为将方法更改为直接使用列表并重复调用ToList
,我会得到正确的结果。
我是否正确地说假设延迟执行产生与立即执行相同的结果是不安全的?
这是一个小应用程序,用于演示它返回 0 个项目
如果我设置了一个断点,我实际上可以看到它检查是否2 everything that begins with 2 should be found
包含Value
,它不检查并返回 false。所以似乎 where 子句中的 FirstOrDefault 选择了错误的项目
c# - 使用 LINQ .Select() 转换为新类型太慢了?
当前项目,打破了这个问题:
客户端存储库:
现在在控制器中我有以下内容:
加载当前存在 200 奇数行的视图大约需要 4 秒。
我想向包含客户名称的访问模型添加一个属性“客户”。客户端的名称将来自两个不同的表之一,该表是从两个“ClientName”类型的数组之一中获取的。
这是使用 LINQ 的第一种方法:
这是第二种方法,使用普通的 'ol C# :
根据我的测试,第二种方法大约快 8 到 10 倍。
我能看到的唯一区别是 .Select 语句。
有人可以告诉我,如果我在第一种方法或替代方法中做错了什么,为什么第一种方法如此!@#$ing 慢?!
编辑: _db.GetAllServiceVisits() 定义如下:
结束编辑
第二次编辑: 我已经从日志中的每个条目中删除了这一行:
上下文日志如下:
问题的附录:有没有更好的方法来提取这些数据?我一直认为(从未检查过)LINQ 上下文为我提供的基于外键的数据访问是最好的,但是看到这些额外的查询,我不再那么确定了!
将在今天晚些时候发布第二部分执行的速度(这是孟买的一个长周末,但我们正在努力完成)
结束编辑
第三次编辑
(我正在考虑从网络服务器到客户端的响应,因为应该考虑所有计算/获取/绑定/等。)
方法一:6.85 秒(从 3 个表调用,然后使用 C# 转换为 View-Model)
方法二:8.59 秒(从 3 个表调用,然后使用 LINQ 转换为 View-Model)
方法三:5.76 秒(单个 LINQ 查询中的所有内容 - 在数据库上执行)
猜猜就决定了。感谢大家的帮助。我将 Jon 标记为正确答案,因为他在数据库方面做所有事情的方法是把培根带回家的原因。非常感谢所有不厌其烦的回复。
结束编辑