Задать вопрос
@Balera

Promis нужно чтобы код функции ждал пока сработает setTimeout и дальше не шел?

вот код нужно чтобы
не лезь выходило только после функции выше

function httpGet(url) {
			return new Promise(function (resolve, reject) {
				var xhr = new XMLHttpRequest();
				xhr.open('GET', url, true);
				xhr.onload = function () {
					if (this.status == 200) {
						resolve(this.response);
					} else {
						var error = new Error(this.statusText);
						error.code = this.status;
						reject(error);
					}
				};
				xhr.onerror = function () {
					reject(new Error("Network Error"));
				};
				xhr.send();
			});
		}
		httpGet("/article/promise/user.json")
			.then(
				response => console.log(`Fulfilled: ${response}`),
				error => console.log(`Rejected: ${error}`)
			);
		console.log('не лезь');


не лезь печатается 1 а должно быть последним
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 2
@kova1ev
Промис выполняется асинхронно, то есть не блокирует поток выполнения программы, он для этого и нужен. Интерпретатор начинает выполнять промис и одновременно продолжает выполнять главный поток программы, то есть в данном случае выводит в консоль "не лезь". Весь код, который должен выполняться только после выполнения промиса придется запихать в колбэк промиса. Как вариант, использовать async await чтобы было более читаемо.
Ответ написан
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
await httpGet("/article/promise/user.json").then(...)
console.log('не лезь');

https://medium.com/front-stories/%D0%BA%D0%B0%D0%B...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы