|
|
1
2
这无关紧要。
是的,这是正确的,因为这同样无关紧要。 我会小心你用这个词的 之前 是的。也许这对我来说意味着不同于对你的意义。我不知道。但也许这就是绊倒你的原因。
如果在发出请求时在同一个epoch中注册事件处理程序,则为“否”。请求只在以后的epoch中完成。 好的,这是我试图用例子来解释的(如果这不好的话很抱歉!)人格化通常是一种很好的教育技巧,而且比使用原始的技术术语更不吓人,所以让我们继续吧。 假设你是老板,有员工。假设你让一个员工为你做一些工作。然后,你让那个员工在完成工作后向你的秘书汇报。在要求员工去做其他的工作之后,你就可以继续自己的工作,而不必等待员工完成工作并报告。你们两个基本上是同时工作的。 现在,在这种情况下,如果你在向员工提出做某事的请求时没有秘书,会发生什么?好吧,没问题。你要在员工完成工作之前,甚至在员工知道该向谁汇报之前,再去雇用另一名秘书,这很好,因为员工只知道他们向你的秘书汇报。员工在分配工作时不知道你的秘书是否存在,而不需要知道。失踪的秘书没有阻止那个雇员开始工作,也没有阻止他理解要做的工作。当员工完成他们的工作时,你已经有了一个秘书在等着你。或者,你不知道,因为你甚至都不知道工作是否真的完成了,你只是发出命令,相信员工能完成他们的工作,不管怎样。你真正关心的是,如果你需要做一些其他的工作,必须等到第一个项目完成后才能让他们向你的秘书汇报,这是另一个问题。 假设你分配给员工工作的时候已经有了一个秘书。这种已经有了秘书的情况和你在分配工作后不久,但在工作完成之前去雇用秘书的情况有什么区别?没有区别。 现在,让我们努力解决你的问题。你的建议是,在你知道员工是否完成了他们的任务之前,似乎不可能可靠地出去雇佣那个秘书。我认为这是严重的误解。完全有可能做到这一点。为什么?我想这不是最容易掌握的。 我要把这个比喻延伸一点,并强加一个奇怪的规则。不管你把项目交给员工有多简单,即使只是早上跑去给你拿咖啡,他们也永远不会在同一天回到你身边。他们总是在晚些时候完成工作,最早是明天。他们甚至可能在你告诉他们的一瞬间内完成工作,但他们永远不会马上给你或你的秘书回信,他们总是最早推迟到明天。 这意味着你有一整天的时间去雇佣那个在你给员工订单时不存在的秘书。只要你明天之前做,你就好。当员工明天回复时,秘书会为你工作,并能收到员工的信息。 编辑对添加评论的响应: 是的,吊装在很多方面都很相似。事情可以按照不同的顺序发生,然后用代码编写。当然,提升是同步的,所以它不是一个完美的相似性,但无序方面仍然是相似的。 epoch只是我自己的一个词,用于事件循环的一次迭代。就像for循环使用i for i从0到2一样,有3个阶段,迭代0、迭代1和迭代2。我把它们叫做时代,因为它就像时间的类别。
在承诺的情况下,它甚至可能是一个微任务。在js worker的情况下,它可能是线程式的(workers是旧的child iframe技术的新热点)。基本上,这些都只是“意识到”一次做不止一件事的方法。node称之为tick,并有如下内容
当你提出要求时,它会说,开始做这件事,并在下一个时代尽早给我回信。在当前纪元结束之前,您可以为请求注册处理程序。 一些代码,例如在您的示例中提到的图像预加载程序的情况下,必须考虑到它附加侦听器的时间太晚(图像正在以备用时间线预加载,有些可能已经加载,在某些浏览器中这意味着加载不会启动),因此它希望检查imageelement.complete以捕获这种情况。在事件侦听器实现的其他情况下,对于事件发生时新侦听器未侦听的已发生事件,某些调度程序实现将向新添加的侦听器激发事件。但这不是事件侦听器实现的通用特性,只是某些实现的特性。 在onupgradeneeded内部的transaction.oncomplete中,这并不是一个很好的例子。它在做不需要做的事情。 |
|
|
kamalav · 获取indexedDb配额存储信息 8 年前 |
|
|
Josh · 如何检查indexedDB实例是否打开? 8 年前 |
|
|
Phillip Senn mpgn · 重复命名事务和对象存储 8 年前 |
|
|
John Doe · 如何从数组中获取特定值? 8 年前 |
|
|
Michael S. · IndexedDB-我需要“id”字段吗? 11 年前 |
|
|
Tjorriemorrie · 如何在angularjs中引导异步事件? 12 年前 |