this.plotted = [jQuery('#img1'), jQuery('#img2'), jQuery('#img3')];
Blah.prototype.animate = function()
{
if (!this.plotted.length)
throw 'Blah::animate - No points have been plotted';
// fix the scope
var _this = this;
var animateOn = function(image)
{
image.attr('src', _this.options.pointActive);
setTimeout(function() { animateOff(point); }, 700);
}
var animateOff = function(image)
{
image.attr('src', _this.options.pointDefault);
setTimeout(function() { animateOn(point); }, 700);
}
for (var i = 0; i < this.plotted.length; i++)
{
var point = this.plotted[i];
setTimeout(function() { animateOn(point); }, 700);
}
}
私は 'オン'と 'オフ'の画像の間でsrc
を切り替えて、これらの3つの画像をアニメートしようとしています。私はこれを「逐次」にしたくありません。つまり、私は最初の画像の変化、次に2番目と3番目の画像の変化を見たくありません。私のノンブロッキングJavascriptでいくつかの問題がある
私はこれを達成するためにsetTimeout
を使用しています。まあ、私はしようとしています...
まず、私が持っている問題は、for loop
内のsetTimeout
です。
for (var i = 0; i < this.plotted.length; i++)
{
var point = this.plotted[i];
console.log(point); // this correctly shows each image point
setTimeout(function()
{
console.log(point); // this shows the same, first, point
animateOn(point);
}, 700);
}
内側のpoint
が外側のpoint
と一致しないことはわかりません:/
また、この方法がうまくいくかどうかを知りたいと思います。これらのネストされた関数呼び出しはスタック上に継続的に構築され、最終的にはRAMが不足しますか?これにアプローチするより良い方法はありますか?