问题标签 [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.
c# - IEnumerable 的非泛型版本是否支持延迟执行?
如果是这样,它支持哪些 .NET Framework 版本?
我已经在 .NET Framework 4.0 上对此进行了测试,它运行良好:
c# - 这两个 linq 实现有什么区别?
我正在阅读Jon Skeet 的 Reimplemnting Linq to Objects 系列。在where文章的实现中,我找到了以下片段,但我不明白将原始方法一分为二有什么好处。
原始方法:
重构方法:
乔恩说——它是为了急切地验证,然后推迟剩下的部分。但是,我不明白。
有人可以更详细地解释一下,这两个函数之间有什么区别,为什么验证会在一个而不是另一个中急切地执行?
结论/解决方案:
由于我对哪些函数被确定为迭代器生成器缺乏了解,我感到困惑。我假设,它基于像 IEnumerable
<T>
这样的方法的签名。但是,根据答案,现在我明白了,如果一个方法使用yield 语句,它就是一个迭代器生成器。
vb.net - 在 VB.NET 中延迟执行?
在上面的代码中,我试图在连接不可用时递归 LoadData 函数,我想将加载推迟到它可用时。
问题是上面的代码会导致编译器错误,因为参数ByRef
不能在 lambda 表达式中使用。
知道如何以正确的方式做到这一点吗?
python - 延迟库允许打包函数访问多少信息?
我知道如果我推迟一个函数并将一些参数传递给它,该函数具有这些参数并且可以使用它们,但是作为实例对象一部分的函数(例如)可以访问其对象的变量吗?
我基本上必须为函数提供它需要作为参数的所有信息吗?
另外,如果对它的唯一引用是在延迟函数中,baz 会被丢弃吗?
objective-c - 在Objective-C中实现Go中的'defer'语句?
今天我读到defer
了 Go 语言中的语句:
defer语句将函数调用推送到列表中。保存的调用列表在周围函数返回后执行。Defer 通常用于简化执行各种清理操作的函数。
我认为在 Objective-C 中实现这样的东西会很有趣。你知道怎么做吗?我想到了调度终结器、自动释放对象和 C++ 析构函数。
自动释放的对象:
自动释放对象似乎是唯一至少会持续到函数结束的解决方案,因为其他解决方案会在当前范围结束时触发。另一方面,他们可以在记忆中停留更长时间,这将是自找麻烦。
调度终结器是我的第一个想法,因为块存在于堆栈中,因此当堆栈展开时我可以轻松地执行某些操作。但是在查看文档之后,看起来我不能将一个简单的“析构函数”函数附加到一个块上,可以吗?
C++ 析构函数大致相同,我将创建一个基于堆栈的对象,其中包含在析构函数运行时要执行的块。这将具有将普通.m
文件转换为Objective-C++的丑陋缺点?
我并没有真正考虑在生产中使用这些东西,我只是对各种解决方案感兴趣。你能想出一些有效的东西,没有明显的缺点吗?基于范围和基于功能的解决方案都会很有趣。
.net - 如何同时迭代多个 IEnumerable
假设我有两个(或更多)IEnumerable<T>
有很多元素。每一个IEnumerable
都有另一种类型T
。列表可能非常长,不应完全加载到内存中。
我想要做的是遍历这些列表,并为每个步骤获取一个包含一个 int、一个字符串和一个 DateTime 的项目,直到到达最长或最短列表的末尾。两种情况都应该支持(布尔参数最长与最短)。对于较短列表中不可用的每个项目(因为已经到达末尾),我希望使用默认值。
是否可以使用延迟执行的 linq 来做到这一点?我知道使用 IEnumerators 直接结合收益回报的解决方案。请参阅如何在 .NET 2 中同时迭代两个 IEnumerables
.net - 重用 IEnumerable导致错误结果,例如在 .Any()
我有点迷失在延期执行的土地上:
我声明了一个 IEnumerable 实现类的实例
然后我迭代它(第一个词是“Lorem”)
.. 写入控制台。
现在在代码中我做了一个
.. 并得到一个 False 作为输出。
现在,如果我将 .Any(..) 部分放在 foreach 循环上方,我确实得到了一个正确的结果,但是循环确实从第二个单词开始。
我的期望是 .Net 为每次调用 IEnumerable 及其底层 IEnumerator 创建不同的运行时“上下文”,因此它们不会干扰......我不想手动 .Reset() 以获得正确的结果?
我在这里想念什么?
更新:
- 链接到 IEnumerable 实现:https ://gist.github.com/814352
- 链接到 IEnumerator 实现:https ://gist.github.com/814354
- .. 最后是底层文本解析器实现:https ://gist.github.com/814358
.. 它基本上是一个 IEnumerable,它允许我遍历给定字符串中的单词。
javascript - 从外部脚本延迟/延迟 document.write 直到文档准备好
我有一个加载广告的外部脚本。正在加载的脚本包括对document.write
. 问题是这会延迟文档为该站点做好准备。我想推迟显示这个,直到文档准备好之后。
目前,我只是尝试将在 jquery doc 中加载外部内容的函数包装好,但页面会爆炸。它进入全白屏幕,仅显示广告和一些代码。
显然这是因为 document.write 在页面加载后运行。有谁知道解决此问题的方法或如何将外部内容的加载延迟到文档准备好之后?