Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完成可变数量的异步事件后的操作_Javascript_Jquery - Fatal编程技术网

Javascript 完成可变数量的异步事件后的操作

Javascript 完成可变数量的异步事件后的操作,javascript,jquery,Javascript,Jquery,我要执行的异步事件数量可变。我希望在他们全部完成后能够采取进一步的行动。 下面的代码片段显示了我试图使用jquery延迟对象调用事件。。有人能帮忙吗?(我知道代码不会按原样运行)。bubble.Transitiono是异步事件。警报(“完成”);在异步回调完成之前调用,实际上是在它们执行之前 var events = []; for (var i = 0; i < stageBubbles.length; i++) { var element = stageBubb

我要执行的异步事件数量可变。我希望在他们全部完成后能够采取进一步的行动。 下面的代码片段显示了我试图使用jquery延迟对象调用事件。。有人能帮忙吗?(我知道代码不会按原样运行)。bubble.Transitiono是异步事件。警报(“完成”);在异步回调完成之前调用,实际上是在它们执行之前

var events = [];
    for (var i = 0; i < stageBubbles.length; i++) {
        var element = stageBubbles[i];
        var bubble = new Object();
        bubble = this.dataPointLayer.get('#' + element.name)[0];
        bubble.setOpacity(0.5);
        events.push(bubble.transitionTo({
            x: element.x,
            y: element.y,
            radius: element.radius,
            duration: 3,
            easing: 'ease-in',
            callback: function () {

            }
        }));
    }
    $.when.apply(this, events).done(function () { alert('complete'); });
var事件=[];
对于(var i=0;i
这个转换函数是在哪里定义的?我在jQuery项目的任何文档中都找不到它。很可能它没有实现$.Deferred方法

如果我的假设是正确的,你可以试试这样的

 showBubbles = function (stageBubbles) {
        var events = [],
            deferred = $.Deferred(),
            completedCount = 0;

        for (var i = 0; i < stageBubbles.length; i++) {
            var element = stageBubbles[i];
            var bubble = new Object();
            bubble = this.dataPointLayer.get('#' + element.name)[0];
            bubble.setOpacity(0.5);
            bubble.transitionTo({
                x: element.x,
                y: element.y,
                radius: element.radius,
                duration: 3,
                easing: 'ease-in',
                callback: function () {
                    completedCount += 1;
                    if (completedCount == stageBubbles.length) {
                        deferred.resolve();
                    }
                }
            });
        }
        return deferred.promise();
    };
    $.when(showBubbles.call(this, stageBubbles)).done(function () { alert('complete'); });
showBubbles=函数(stageBubbles){
var事件=[],
递延=$。递延(),
completedCount=0;
对于(var i=0;i

此函数返回一个延迟对象,该对象在为所有气泡调用回调时解析。

是,您的正确转换是reactivejs库的一部分。我会给你答案的,干杯!没问题,让我知道结果如何。