我基本上非常确定这种模式一定存在并且拥有一个名称...现在我将其称为“门模式”...
在这里:
在我网页的 javascript 中,我必须触发各种异步进程。我们不讨论 async js 有多真实,但无论如何我必须触发 2 或 3 个 AJAX 调用,必须确定,UI 构建已经完成,等等。
只有这样,当所有这些过程都完成后,我才想运行某个功能。并且恰好一次。
示例
1: cropStore loaded()
2: resizeEvent()
3: productStore loaded()
模式: 在每个(成功的)Ajax-load-callback 结束时,GUI 构造例程结束时,等等......我将相应的标志从 false 设置为 true 并调用 gatedAction()
onEvent( 'load',
{
.... // whatever has to happen in response to cropStored, resized, etc...
// lastly:
f1 = true; //resp f2, f3, ...
gatedAction();
}
Gate 将检查标志,如果任何标志仍未设置则返回,如果所有标志(或我称之为:门)都打开,则仅调用目标函数。如果我所有的异步前置条件只调用 gatedAction() 一次,我希望我可以确定,实际的 targetFunction 只调用了一次 ()。
gatedAction ()
{
// Gate
if ( ! f1) return;
if ( ! f2) return;
if ( ! f3) return;
// actual Action ( <=> f1==f2==f3==true )
targetFunction();
}
在实践中它工作可靠。旁注:我认为可以忽略 java 典型(不是 js 典型)同步/ volatile 问题,因为 javascript 不是真正的多线程。 Afaik 一个函数永远不会在中间停止,只是为了在同一文档运行时授予另一个 javascript 函数...
那么,任何人,有这个名字吗? :-)
我实际上经常需要这种模式,尤其是对于复杂的后端 UI。 .)
最佳答案
听起来像Balking pattern对我来说。
关于javascript - 这个图案有名字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3904931/