В JavaScript выполнить функцию, когда первая функция готова
Есть ли способ, в javascript, для вызова другой функции, когда первая функция "готова"
что-то вроде этого:
ridiculousTimeConsumingFunction().onReady( newFunction() );
Чтобы проиллюстрировать мой пример, вы можете взглянуть на нее: http://web.cinaird.se/pdf/test.htm
4 ответа
ridiculousTimeConsumingFunction (); newFunction ();
Выполнит newFunction()
после ridiculousTimeConsumingFunction()
закончил
Вы также можете сделать что-то вроде ridiculousTimeConsumingFunction(newFunction);
и ridiculousTimeConsumingFunction определяется следующим образом:
function ridiculousTimeConsumingFunction(callback) {
for (var i=0;i<1000000000;i++) {
};
callback();
}
Который будет иметь тот же эффект.
Infact, отбросьте все это, потому что это асинхронное событие, а не отнимающая много времени функция... Вы должны будете использовать обратный вызов:
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!');}
В вашем примере функция "ridiculousTimeConsumingFunction" на самом деле не занимает столько времени для выполнения: она просто запланировала запуск другой функции на 1 секунду в будущем.
Если вы хотите сделать что-то подобное, я бы посоветовал вам проверить API эффектов jQuery UI. Это позволяет вам "связывать" анимации вместе одну за другой и получать желаемый эффект.
Если вы имеете в виду готовность, когда DOM готов, такого события нет, однако вы можете использовать jQuery ready
обработчик для запуска вашей функции, когда DOM становится готовым.
С Javascript вы можете запустить свою функцию в load
Событие тоже так:
window.onload = function(){
// your function code here
};
Или же
window.onload = somefunction;