Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658

Использование данных вне функции после её выполнения

17.02.2018, 20:41. Показов 512. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как во втором выводе получить результат вне самой функции, которая выполняется http.onload = function(e).
JavaScript
1
2
3
4
5
6
7
const http = new XMLHttpRequest();
http.open("GET", "https://ya.ru/index.php",true);
http.send();
http.onload = function(e){
    console.log(http.status);//выводит как положено
}
console.log(http.status);//выводит 0 т.е. неверный результат
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2018, 20:41
Ответы с готовыми решениями:

Использование данных из БД вне цикла
Приветствую, уважаемые программисты. Такая проблема: $result = mysql_query("SELECT * FROM datebase where var=$var"); while...

После выполнения функции, приложение зависает.
После выполнения функции, приложение зависает. Либо уходить в бесконечный цикл, процессор неимоверно нагружается. String...

Hover активен после выполнения функции
Добрый день. Вот мой крипт: hhttp://jsfiddle.net/962yxny6/4/ Если нажать на копку "Развернуть" и не двигать курсором- то контент...

4
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
17.02.2018, 23:44
koc94ok, вы не поняли сути асинхронности.
Ваш второй вывод не ждет пока выполнится запрос, поэтому всегда будет выдавать статус 0.

Если вы хотите использовать данные вне колбека (там где первый вывод) - запишите их в глобальную переменную, например так:

JavaScript
1
2
3
4
5
6
7
8
9
10
let data;
const http = new XMLHttpRequest();
http.open("GET", "https://ya.ru/index.php",true);
http.send();
http.onload = function(e){
data = http.response;
    console.log(http.status);//выводит как положено
}
 
console.log(data) // здесь по-прежнему будет не то, что вы ожидаете (undefined)
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
18.02.2018, 14:09  [ТС]
msheal, Хорошо, я уже сделал все через async/await и promise, как прервать выполнение асинхронной функции?
Выполнения асинхронной функции наматываются друг на друга и получается каша.
0
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
18.02.2018, 17:06
Цитата Сообщение от koc94ok Посмотреть сообщение
как прервать выполнение асинхронной функции
Конкретно xhr запрос прерывается xhr.abort(), фетч запрос сложнее, с помощью AbortController

Цитата Сообщение от koc94ok Посмотреть сообщение
Выполнения асинхронной функции наматываются друг на друга и получается каша
будет каша или нет - зависит лишь от разработчика. Я не имею ни малейшего понятия как выглядит ваш код
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
18.02.2018, 18:10  [ТС]
msheal,

Код упростил до самого необходимого:

Суть в том, что одновременно должна быть запущена всего одна функция play().
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function quest() 
{
        return new Promise(resolve => {
        const http = new XMLHttpRequest();
        http.open("GET", "https://ya.ru/index.php",true);
        http.send();
        http.timeout = 60000; 
                http.ontimeout = function () { }
        http.onload = () => resolve(http);
    });
}
 
async function play() 
{
    myjson = await quest(); //получаем новый результат
                            setTimeout(function() 
                        {
                            //делаем что-то
                                                        setTimeout(function() 
                                {
                                  //делаем что-то
                                                              play();
                                }, 20000);
                        }, 20000);
}
setInterval( function() { play(); } , 5000);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2018, 18:10
Помогаю со студенческими работами здесь

Удаляется string после выполнения функции
Всем привет. Я начинающий в языке C++ и поэтому прошу помощи. У меня внутри функции создается объект типа string, string принимает участие...

Остановка после выполнения функции stop
почему, когда запускаешь start(), циклит start() stop() start() stop() и т.д.. он же должен останавливаться после выполнения функции stop()...

Пропадает hover после выполнения функции
Здравствуйте. Я задаю параметры для наведения в css, но после выполнения функции они пропадают. Подскажите, есть ли способ прописать...

Запуск функции после выполнения обновления связей
Подскажите, пожалуйста, как после выполнения команды меню 'Правка-Связи-Обновить(Изменить)' выполнить функцию VBA. Соответствует ли этому...

Css перестает работать после выполнения функции
Здравствуйте. Встала у меня такая проблемка. Есть у меня такой кусочек css .buttons { width: 59px; height: 40px; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru