في JavaScript ، قم بتنفيذ وظيفة عندما تكون الوظيفة الأولى جاهزة
-
02-10-2019 - |
سؤال
هل هناك أي طريقة ، في JavaScript ، للاتصال بوظيفة أخرى عندما تكون الوظيفة الأولى "جاهزة"
شيء من هذا القبيل:
ridiculousTimeConsumingFunction().onReady( newFunction() );
لتوضيح مثالي ، يمكنك إلقاء نظرة عليها:http://web.cinaird.se/pdf/test.htm
المحلول
سخرية timeConsumingFunction () ؛ newFunction () ؛
سوف ينفذ newFunction()
بعد، بعدما ridiculousTimeConsumingFunction()
انتهى.
يمكنك أيضا أن تفعل شيئا مثل ridiculousTimeConsumingFunction(newFunction);
, ولديها محدد على ما يلي:
function ridiculousTimeConsumingFunction(callback) {
for (var i=0;i<1000000000;i++) {
};
callback();
}
التي سيكون لها نفس التأثير.
إنفاكت ، إلغاء كل ذلك ، لأنه حدث غير متزامن ، وليس وظيفة تستغرق وقتًا طويلاً ... يجب عليك استخدام رد الاتصال:
function longFunction (callback) {
setTimeout(function(){
$(".theDiv").css('height', 200 );
callback();
}, 1000);
}
ثم نسميها على النحو التالي:
longFunction(function () {
$("#info").html(info);
});
نصائح أخرى
لا يتم تعريف مفهوم "جاهز" بشكل عام للوظائف غير المتزامنة مثل مثالك. عادة ما يتم هذا النوع من الأشياء من خلال عمليات الاسترجاعات:
function asyncFunc(callback) {
setTimeout(function() {
doSomething();
callback();
}, 1000);
}
asyncFunc(function() {alert('Done!');}
في العينة الخاصة بك ، لا تستغرق وظيفة "HorticIttimeConsumingFunction" في الواقع كل هذا الوقت المدى لتنفيذها: إنه مجدولة فقط اخر وظيفة لتشغيل 1 ثانية في المستقبل.
إذا كنت تريد أن تفعل شيئًا كهذا ، أقترح عليك التحقق من jquery uiآثار API. يتيح لك "سلسلة" الرسوم المتحركة معًا واحدة تلو الأخرى ويجب أن تحقق التأثير الذي تتبعه.
إذا كنت تقصد جاهز عندما يكون DOM جاهزًا ، لا يوجد مثل هذا الحدث ، ولكن يمكنك استخدامه jquery ready
معالج لإطلاق وظيفتك عندما يصبح DOM جاهزًا.
مع JavaScript يمكنك إطلاق وظيفتك فيها load
الحدث أيضا مثل هذا:
window.onload = function(){
// your function code here
};
أو
window.onload = somefunction;