【发布时间】:2014-10-13 07:19:28
【问题描述】:
看到这个小提琴:http://jsfiddle.net/ym1aLk25/9/
var s = $('#shake');
var randomTran = function (flag) {
flag = flag || 0;
if (flag < 6) {
var rh = Math.floor((Math.random() * 10) - 5),
rv = Math.floor((Math.random() * 10) - 5);
s.transit({x: rh,y: rv}, 50, randomTran.bind(this, ++flag))
};
};
randomTran();
s.transit({x: 0,y: 0});
我试图让元素摇晃几秒钟,然后回到原来的位置。但它并没有像我预期的那样工作,问题出在回调函数上。根据这个问题:If a jQuery function calls itself in its completion callback, is that a recursive danger to the stack?,似乎回调仍在循环中,回调函数之后的代码也在执行。 那么除了设置超时之外,如何实现我的目标呢?我在哪里可以找到关于这个机制的更详细的解释?
【问题讨论】:
-
你的函数中没有回调,它同时运行,因为 randomtran 异步运行
-
.transit不是已经使用超时了吗?
标签: javascript recursion callback