جافاسكريبت - jQuery: الانتظار/التأخير لمدة ثانية واحدة دون تنفيذ الكود
لا أستطيع تشغيل طريقة .delay في jQuery:
$.delay(3000); // not working
$(queue).delay(3000); // not working
أنا أستخدم حلقة while للانتظار حتى تكون قيمة متغيرة بشكل غير مسيطر عليها أكبر من أو تساوي قيمة أخرى ولا أستطيع إيجاد أي طريقة لإيقاف التنفيذ لمدة X ثوانٍ.
الإجابة رقم 1
يمكنك أيضًا تأجيل بعض العمليات بهذه الطريقة:
setTimeout(function (){
// Something you want delayed.
}, 5000); // How long you want the delay to be, measured in milliseconds.
الإجابة رقم 2
تُستخدم الدالة .delay لتأخير الرسوم المتحركة في قائمة الانتظار، وليس لإيقاف التنفيذ.
بدلاً من استخدام حلقة while، تحتاج إلى استدعاء طريقة بشكل تكراري تقوم بالتحقق كل ثانية باستخدام setTimeout:
var check = function(){
if(condition){
// run when condition is met
}
else {
setTimeout(check, 1000); // check again in a second
}
}
check();
الإجابة رقم 3
ES6 مؤقت التوقف
setTimeout(() => {
console.log("we waited 204586560000 ms to run this code, oh boy wowwoowee!");
}, 204586560000);
تعديل: 204586560000 مللي ثانية هو الوقت التقريبي بين السؤال الأصلي وهذا الجواب... بافتراض أنني حسبت بشكل صحيح.
الإجابة رقم 4
إذا كنت تستخدم ميزات ES6 وأنت في دالة غير متزامنة، يمكنك وقف تنفيذ الكود لفترة معينة باستخدام هذه الدالة:
const delay = millis => new Promise((resolve, reject) => {
setTimeout(_ => resolve(), millis)
});
هكذا تستخدمه:
await delay(5000);
سيتوقف لمدة مقدار المللي ثانية المطلوب، ولكن فقط إذا كنت في دالة غير متزامنة. المثال أدناه:
const myFunction = async function() {
// first code block ...
await delay(5000);
// some more code, executed 5 seconds after the first code block finishes
}
الإجابة رقم 5
وظيفة delay في jQuery مُصممة للاستخدام مع التأثيرات وقوائم انتظار التأثيرات، انظر مستندات delay والمثال الوارد فيها:
$('#foo').slideUp(300).delay(800).fadeIn(400);
إذا كنت تريد مراقبة متغير للتغيرات، يمكنك القيام بشيء مثل
(function() {
var observerInterval = setInterval(function() {
if (/* check for changes here */) {
clearInterval(observerInterval);
// do something here
}
}, 1000);
})();
