javascript:使用一个回调执行一堆异步方法

2023-12-22

我需要执行一堆异步方法(客户端 SQLite 数据库),并且仅调用一个最终回调。

当然,最丑陋的方式是:

execAll : function(callBack) {
        asynch1(function() {
            asynch2(function() {
                ...
                asynchN(function() {
                    callBack();
                })
            })
        });
    }

但我知道有更好的方法可以做到这一点。直观上,我会检测何时使用计数器调用所有回调来调用最终回调。

我认为这是一个常见的设计模式,所以如果有人能指出我正确的方向......

提前致谢 !


这很容易

var callback = (function(){
    var finishedCalls = 0;
    return function(){
        if (++finishedCalls == 4){
             //execute your action here
        }
    };
})();

只需将此回调传递给所有方法,一旦调用它 4 次,它就会执行。

如果您想为此使用工厂,那么您可以执行以下操作

function createCallback(limit, fn){
    var finishedCalls = 0;
    return function(){
        if (++finishedCalls == limit){
             fn();
        }
    };
}


var callback = createCallback(4, function(){
    alert("woot!");
});


async1(callback);
async2(callback);
async3(callback);
async4(callback);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript:使用一个回调执行一堆异步方法 的相关文章

  • 将鼠标悬停时的鼠标光标更改为锚状样式

    如果我将鼠标悬停在div鼠标光标将更改为 HTML 锚点中的光标 我怎样才能做到这一点 假设你的div has an id myDiv 将以下内容添加到您的 CSS 中 这cursor pointer指定光标应与用于锚点 超链接 的手形图标
  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • 渲染货币和符号并与来自不同单元格的数据相结合

    我正在使用最新的 jQuery DataTables v1 10 7 我正在尝试将数字解析为以下格式 239 90 USD 我可以使用此命令使货币正常工作 columns data Price render fn dataTable ren
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • 关闭捕获上下文 Swift

    当我尝试更改闭包中的变量时出现此错误 A C function pointer cannot be formed from a closure that captures context 是否有解决方法或者仍然可以更改闭包内的变量 My C
  • 如何格式化 Highcharts 的 (x,y) 对数据的日期时间

    我的序列化方法会产生如下所示的日期时间字符串 2014 07 09T12 30 41Z 为什么下面的代码不起作用 function container highcharts xAxis type datetime series data x
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 引导程序提前输入未填充承诺的响应

    我的引导程序预输入如下
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • 有没有办法使用 Rspec/Capybara/Selenium 将 javascript console.errors 打印到终端?

    当我运行 rspec 时 是否可以让 capybara selenium 向 rspec 报告任何 javascript console errors 和其他异常 我有一大堆测试失败 但当我手动测试它时 我的应用程序正在运行 如果不知道仅在
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • 如何隐藏/禁用 Highcharts.js 中的图例框?

    我想问是否可以使用 HighCharts js 库隐藏图表中的所有图例框 var chart object chart renderTo render to type graph type colors graph colors title
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0

随机推荐

  • 在 iOS 中绘制多点路线

    我正在尝试在提供的地图应用程序中显示具有多个点的路线 我已经弄清楚如何显示以下两点之间的路线这个帖子 https stackoverflow com q 4609340 620197 我正在建立以下多个点的列表这些方向 http mapki
  • 从旋转的 UIImageView 创建 UIImage

    我有一个 UIImageView 里面有一张图片 我在显示之前通过将 UIImageView 的变换属性设置为 CGAffineTransformMakeRotation angle 来旋转图像 其中 angle 是以弧度为单位的角度 我希
  • 从 LAN 网络中的另一台 PC 访问 Wamp 2.5 phpmyadmin

    我可以从另一台电脑访问 wamp localhost 但是从这台电脑访问 phpmyadmin 时我无法访问如下图 在 WAMPServer 上 配置了 phpMyAdmin 工具 以便除了运行 WAMPServer 的 IP 之外 无法从
  • 如何使用 Angular 的 ngFor 实现项目重新排序/随机播放动画?

    Vue 用户很容易实现这样的 item shuffle 动画 请参阅他们的官方文档 我搜索了很多 但找不到适合 Angular 用户的解决方案 ngFor似乎在洗牌时切换项目内容而不是移动项目 这是我的演示 http embed plnkr
  • 在 PHP 中获取给定一周的开始天和结束天

    我正在尝试使用星期日作为开始日期和参考日期来获取周范围 例如 date 但我似乎无法弄清楚 例如 如果 date 为 2009 05 01 我将得到 2009 04 26 和 2009 05 02 2009 05 10 将产生 2009 0
  • ember 中具有多个步骤的手风琴向导

    我正在使用 ember 构建一个 巫师手风琴 基本上我想要的是 始终显示的手风琴 手风琴包含所有步骤 一个步骤处于活动状态 但也可能更改先前步骤的标题 每个步骤都有自己的模型 例如 第一步从国家 地区中选择 第二步从产品中选择 应该可以在步
  • UIView autoresizingMask问题

    在 iPad 中 我有一个 UIViewController 里面有另一个 UIview 位于底部 UIView Controller X UIView 是 X 我在 UIViewController 的 viewDidLoad 上为其定义
  • 数据库设计中的多对多关系

    我目前有一个数据库 其中有两个表 分别称为 Articles 和 Tags 为了允许文章属于多个类别 我有多对多的关系 这样的设计从性能上来说是不是一个错误呢 或者我应该删除这两个表之间的关系并添加第三个表作为桥梁 articlesTags
  • 如何在单击按钮时通过动画显示视图?

    我是编码新手 我正在制作一个应用程序 我需要在单击按钮时显示一个视图 并且该视图应该看起来像是来自按钮本身 再次单击该按钮时 视图应返回到按钮 动画 我有翻转 卷曲等动画 但我不知道该怎么做 这是一个简单的例子 放showView 作为按钮
  • 如何访问django项目之外的目录文件?

    我的 Django 项目在 RHEL 7 操作系统上运行 项目在路径中 root project 项目托管在 httpd 服务器上 现在我正在尝试访问目录之外的文件 例如 root data info test txt 我应该如何访问vie
  • 如何在 JSF 2 中创建自定义转换器?

    我有一个名为 操作 的实体 Entity Table name operation public class Operation implements Serializable private static final long seria
  • 如何获得值的二进制表示形式[重复]

    这个问题在这里已经有答案了 可能的重复 C 中十进制到二进制的转换 https stackoverflow com questions 2954962 decimal to binary conversion in c 我有 3 432 1
  • site.css 不适用于我的示例网站

    这里是新手 我在 VS2010 中创建了一个空的 MVC 项目 并且正在尝试格式化我的视图以进行身份 验证 所以 我将其添加到 site css 中 rez color Olive 我的看法是 using Html BeginForm di
  • Django 静态文件(css)不起作用

    由于某种原因 我似乎无法包含我的引导 css 文件 我对 Python 和 Django 特别陌生 所以我肯定做错了什么 姜戈 1 9 2 读完后Django 官方解释 https docs djangoproject com en 1 9
  • Bootstrap:如何将按钮放置在输入组旁边

    我无法弄清楚 符合 正确的引导 如何让按钮位于 div 内的输入组旁边 它们需要居中对齐 这就是我想要的样子 这就是正在发生的事情 这是我当前的代码 div div div div
  • Boost变体apply_visitor编译错误

    这个简单的 boost variant 和 boost apply visitor 示例代码 include
  • 为什么通过实例调用静态方法不会给 Java 编译器带来错误?

    我相信你们都知道我的意思 代码例如 Thread thread new Thread int activeCount thread activeCount 引发编译器警告 为什么不是错误呢 EDIT 需要明确的是 问题与线程无关 我意识到在
  • 在 PHP 中实例化类的正确方法

    我正在尝试在类内创建一个方法 它将实例化当前所在的类 但我还需要此方法才能在所有扩展类中正常工作 据我所知这个线程 https stackoverflow com questions 5197300 new self vs new stat
  • Elasticsearch:可以进行批量搜索吗?

    我知道支持批量索引操作 但是否可以对搜索查询执行相同的操作 我想发送许多不同的不相关的查询 进行精度 召回测试 使用批量查询可能会更快 是的 您可以使用多搜索API https www elastic co guide en elastic
  • javascript:使用一个回调执行一堆异步方法

    我需要执行一堆异步方法 客户端 SQLite 数据库 并且仅调用一个最终回调 当然 最丑陋的方式是 execAll function callBack asynch1 function asynch2 function asynchN fu