1

関数内にアニメーションがあります。関数を終了する前にアニメーションが最初に終了するようにコーディングするにはどうすればよいですか?

以下のコードを検討してください。

ShowBanner.prototype.basicRotate = function (pos, callback) {
    var self = this;
    self.animation = true;

    this.bigbannerScroll.animate({
        left: pos
    }, this.settings.rotateSpeed, function () {
        self.animation = false;
        if (callback) callback();
        console.log('animation done');
        return false;
    });

    console.log('function done');
}

コードに基づいて、console.log('function done')は の前に最初に呼び出されconsole.log('animation done')ます。関数を終了する前にアニメーションが終了したことを示す最初のログを最初に呼び出す方法はありますか?

4

2 に答える 2

0

animateは非同期なので、アニメーションの実行中に一時停止する方法はないと思います。completeそのコールバック関数に固執するのが最善の策です。

もう 1 つの方法は、( を使用してsetTimeout) タイムアウトを設定して、指定した時間の経過後に実行する別の関数を定義することです。しかし、私はこれの利点を見ることができません。

于 2013-04-24T08:54:07.670 に答える
0

いいえ、animate は非同期関数であるため、アニメーションを開始してから戻ります。

アニメーションが完了した後に何かをする必要がある場合は、完全なコールバックを使用する必要があります。

于 2013-04-24T08:54:18.213 に答える