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