javascript - 这个图案有名字吗?

标签 javascript design-patterns gateway

我基本上非常确定这种模式一定存在并且拥有一个名称...现在我将其称为“门模式”...

在这里:

在我网页的 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/

相关文章:

javascript - 在javascript中运行时动态从firebase实时数据库获取数据

javascript - 将函数参数重新声明为变量?

WCF "Add Service Reference"或 "Share the Contract assembly"项目之间?

design-patterns - 贫血领域模型与领域模型

amazon-web-services - 如何在 AWS API Gateway 中配置 Keycloak

asp.net - Ocelot Gateway 重复查询参数

javascript - 为什么 jquery textcomplete 在第一次输入单词后无法正确找到其他单词?

javascript - 未定义的异步 Google Maps API v3 不是函数

c# - 通过反射从某些给定字符串创建强类型 LINQ 查询的最佳方法是什么

nginx - 如何增加页面超时以防止504错误?