Показать сообщение отдельно
  #5 (permalink)  
Старый 10.04.2014, 15:39
Новичок на форуме
Отправить личное сообщение для XRASER Посмотреть профиль Найти все сообщения от XRASER
 
Регистрация: 10.04.2014
Сообщений: 6

Сообщение от Octane Посмотреть сообщение
Думаю уже можно советовать использовать 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();
Спасибо большое, второй пример понятен, буду использовать его.
Ответить с цитированием