javascript - javascript中具有公共(public)回调的类

标签 javascript ajax angularjs callback

我想构建一个javascript类来注册几个不同的函数来执行单个公共(public)回调,所有注册的函数应该异步执行,然后一旦所有函数都完成,它应该执行定义的回调函数

我们还应该能够在回调函数执行之前定义一个最长时间。例如,如果我们将其定义为3000,并且所有注册函数返回的时间超过3000 ms,则即使ajax函数尚未执行,它也应该继续执行回调函数。完成重调。

需要明确的是,此代码需要灵活、独立且可重用

假设我们注册的任何函数都将实现对我们在其中某个时刻定义的函数的调用,这标志着其完成。例如。在函数结束时,我将输入 myClass.markDone() 让类知道函数已完成执行

是否可以使用 javascript 或使用 angular.js 而不使用 jquery?

最佳答案

要实现这一目标,请查看这些 Angular 内置模块:

https://docs.angularjs.org/api/ng/service/ $q

https://docs.angularjs.org/api/ng/service/ $超时

这是 plunkr 上的示例实现:

qAllWithTimeout([
    makePromise(function(callback) {
      // Mock async call 1
      setTimeout(callback, 200);
    }),
    makePromise(function(callback) {
      // Mock async call 2
      setTimeout(callback, 500);
    }),
    makePromise(function(callback) {
      // Long running mock async call 2
      setTimeout(callback, 10500);
    })
  ], 3000)
    .then(function() {        
        $scope.state = 'ready';
    })

http://plnkr.co/edit/hNo9kJmKIR4hEoNk9pP2?p=preview

关于javascript - javascript中具有公共(public)回调的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28342146/

相关文章:

javascript - 使用 jQuery 在部分进入视口(viewport)时旋转 SVG

php - MySQL Jquery 更新数组?

javascript - 为什么过滤器隐藏所有元素?

javascript - 里面有文字的复选框

javascript - 有没有办法知道事件正在调用哪个函数?

javascript - 类型错误 : object is not a function with async. waterfall

php - 循环中使用ajax进行同步请求

javascript - 通过 Ajax 动态加载时多个脚本之间的可见性

javascript - 当 <base> 标签包含在 HTML head 中时,FusionCharts 无法正确呈现

angularjs - 刷新时 Angular 重定向到主页