Показать сообщение отдельно
  #4 (permalink)  
Старый 10.04.2014, 16:35
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Думаю уже можно советовать использовать Promise, нативная поддержка есть в Firefox и Chrome
new Promise(function (resolve) {

	alert("Начали");

	setTimeout(function () {

		resolve(1);

	}, 1000)

}).then(function (value) {

	alert("Закончили. Результат = " + value + ".");

});
для старых браузеров и IE можно подключить полифил https://github.com/jakearchibald/es6-promise

Либо делай, как сказал dmitriymar: «обрамить весь оставшийся код в функцию, и вызывать её в конце вызываемой в асинхроне функции»
var n = 0;

function func() {
	setTimeout(function () {
		n = 1;
		callback();
	}, 2000); // Задержка 2 секунды, для примера.
}

function callback() {
	alert("Закончили. Результат = " + n + ".");
}

alert("Начали");
func();
Ответить с цитированием