settimeoutと.delay()の違い

1009 ワード

以前はsettimeoutと.delay()の使い方は同じように遅延していくつかの方法を実行するだけで、後で使う時実は違いがあることに気づきました
私が適用したシーンは、あるボタンをクリックするとtoastバーが表示され、2秒後に自動的に消えます.2秒以内にボタンを再度クリックして現在のtoastバーを閉じると、toastバーが再表示されます.
該当するユーザーがいない場合は、再フィルタしてください





ボタンをクリックして実行するjsコード

function show_nobody_tip() {
$("#nobody_tip").fadeOut(0);
$("#nobody_tip").fadeIn(100);
setTimeout(function () {
$("#nobody_tip").fadeOut(1000)
}, 2000)
}

settimeout方式では予想通りに実行するが、$("#nobody_tip").delay(2000).fadeOut(1000)では、再度ボタンをクリックしたときに現在のtoastバーが先に閉じないという問題が発生しますが、なぜこのような問題が発生するのかは、呼び出しのためです.delay()後fadeOut(1000)はすでにキューに並んでいるが、delayが実行する前にこの要素を再操作するときは先に実行する.delay()後のfadeOut(1000)は、fadeOut(0)を実行しません.