С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87

Как заставить скрипты работать по очереди?

19.12.2019, 13:08. Показов 1302. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть скрипт, в первой его части я обращаюсь к странице стороннего сайта, собираю информацию и записываю в массив. Во второй - обращаюсь к другой странице и делаю аналогичные действия. Дальше мне нужно работать с полученным массивом. НО т.к. скрипты выполняются не одновременно, то массив не успевает создаться, когда скрипт начинает с ним работу. Как сделать последовательное выполнение функций?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2019, 13:08
Ответы с готовыми решениями:

Как можно заставить работать php скрипты на третьем сайте при посещении первого (через второй)
Сразу к сути, вникните... А задача следующая. Есть 3 сайта... На первом из них размещаю картинку, ссылка в ней на второй сайт. Так...

Как заставить сайт написанный на 5.3 заставить работать на 5.6? Как принудительно включить register_globals?
Есть древний сайт. Работает на php 5.3. Как объяснил разработчик данного сайта - все дело в register_globals, надо принудительно включить...

Как заставить интерпретатор читать скрипты?
Понять не могу, что нужно сделать, что б заработал какой-нить скрипт. Делаю форму, указываю <table action="script.php">,...

11
 Аватар для esculap_ra
462 / 265 / 55
Регистрация: 22.08.2010
Сообщений: 1,204
Записей в блоге: 4
19.12.2019, 13:44
Цитата Сообщение от JGalt Посмотреть сообщение
собираю информацию и записываю в массив
При загрузке новой страницы массив потеряется. Значит его нужно передать на другую страницу методом post
Покажи код - я подскажу что и как
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
19.12.2019, 14:04  [ТС]
Это скрипт расширения для хрома.

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
27
28
29
document.addEventListener('DOMContentLoaded', function() {
    var checkPageButton = document.getElementById('checkPage');
    checkPageButton.addEventListener('click', function() { 
    
total = new Array(); //массив всех данных   
 
 
// получаем данные из ОТЛОЖЕННЫЕ  и пишем в total
    $.get("https://awaysite.ru/poned", function(data){
...
...
            total.push(something);          
});
 
    
// получаем данные из корзины и пишем в total
    $.get("https://awaysite.ru/basket", function(data){
...
...
        total.push(something);
    }     
   });
 
 
  Далее хочу работать с массивом total
   
    
    }, false);
}, false);
0
380 / 230 / 115
Регистрация: 22.11.2016
Сообщений: 379
19.12.2019, 14:38
JavaScript
1
2
3
4
5
6
7
8
let arr = [];
$.when($.get("https://jsonplaceholder.typicode.com/todos/1"), 
       $.get("https://jsonplaceholder.typicode.com/todos/1"))
    .done(function (r1, r2) {
        arr.push(r1[0], r2[0])
 
        console.log(arr);
});
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
19.12.2019, 16:00  [ТС]
Ковырялся пытался, не выходит

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
document.addEventListener('DOMContentLoaded', function() {
    var checkPageButton = document.getElementById('checkPage');
    checkPageButton.addEventListener('click', function() { 
    
total = new Array(); //массив всех данных   
 
// проверка авторизации (НЕ РИАЛИЗОВАНО)
// возможность обновления
// проверка на пустую КОрзину и ОТЛОЖЕНО
 
let arr = [];
$.when(get_poned(), 
       get_basket())
    .done(function () {     
        alert('работа с массивом');
});
 
 
 
// получаем данные из ОТЛОЖЕННЫЕ  и пишем в total
function get_poned() {
    $.get("https://lk.wildberries.ru/poned", function(data){
        var fou1 = data.indexOf('wbTable.init');
        var fou2 = data.indexOf('Все товары"}]}'); 
        var str = data.substring(fou1+106, fou2); 
        var fou3 = str.indexOf('pagingInfo');
        var arr = new Array();
        var basket = new Array();   
        str = str.substring(37, fou3-24); 
        arr = str.split('},{') 
    
        $.each(arr,function(index,value){           
            arr[index] = '{'+arr[index]+'}';
            basket[index] = JSON.parse(arr[index]);
            // выбираем меньшую цену
            if (basket[index].price > basket[index].priceWithCoupon && basket[index].priceWithCoupon != 0) {
                basket[index].price = basket[index].priceWithCoupon;
            }   
            if (basket[index].price > basket[index].priceWithCouponAndDiscount && basket[index].priceWithCouponAndDiscount != 0) {
                basket[index].price = basket[index].priceWithCouponAndDiscount;
            }
            if (basket[index].price > basket[index].priceWithSale && basket[index].priceWithSale != 0) {
                basket[index].price = basket[index].priceWithSale;
            }
            if (basket[index].price > basket[index].priceSumWithSale && basket[index].priceSumWithSale != 0) {
                basket[index].price = basket[index].priceSumWithSale;
            }
            let date = new Date();
            let time = date.getDate() +':'+ date.getMonth() +':'+ date.getFullYear();
            
            var something = {    
                cod1S: basket[index].cod1S,
                price: basket[index].price,    
                date: time       
            };
            total.push(something);          
        });
    }); 
}
    
// получаем данные из корзины и пишем в total
function get_basket() {
    $.get("https://lk.wildberries.ru/basket", function(data){
 
    var found1 = data.indexOf('PageType');
    var found2 = data.indexOf('Delivery');  
    var string1 = data.substring(found1+21, found2-5);  
    string1 = "{"+string1+"}";
    var basket = JSON.parse(string1);
    let date = new Date();
    let time = date.getDate() +':'+ date.getMonth() +':'+ date.getFullYear();   
    
    for (let i = 0; i < basket.ProdID.length; i++) {     
        var something = {    
        cod1S: basket.ProdID[i],
        price: basket.Value[i],    
        date: time       
        };
        total.push(something);
    }     
   }); 
}
    
    }, false);
}, false);
0
380 / 230 / 115
Регистрация: 22.11.2016
Сообщений: 379
19.12.2019, 16:39
Все правильно, так вы их никогда не получите.
Вы из функций не возвращаете $.get

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$.when(get_function1(), 
       get_function2())
    .done(function (r1, r2) {
 
        let arr = [];
        arr.push(r1[0], r2[0]);
 
        console.log(arr);
});
 
function get_function1() {
    return $.get("https://jsonplaceholder.typicode.com/todos/1");
}
 
function get_function2() {
    return $.get("https://jsonplaceholder.typicode.com/todos/1");
}
1
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
19.12.2019, 16:50  [ТС]
оп, благодарю, буду дальше напрягать то, что в голове)
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
19.12.2019, 22:54  [ТС]
Это работает, если на странице, к которой обращаешься уже есть JSON, но если надо сначала спарсить страницу и обработать ее, то return $.get не помогает. Или мне придется свою создать страничку, на которую поместить эти данные? А потом читать их через

JavaScript
1
2
3
function get_function1() {
    return $.get("https://jsonplaceholder.typicode.com/todos/1");
}
0
380 / 230 / 115
Регистрация: 22.11.2016
Сообщений: 379
19.12.2019, 23:19
используйте fetch()
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
20.12.2019, 01:34
JGalt,

Попробуйте так http://some-test.onlinewebshop.net/delay-fetch/
JavaScript
1
2
3
4
5
6
7
let fun_1 = async () => await(await fetch('https://jsonplaceholder.typicode.com/todos/1')).json();
let fun_2 = async () => await(await fetch('https://jsonplaceholder.typicode.com/todos/1')).json();
 
(async ()=> {
    arr.push(await fun_1(), await fun_2());
    console.log(arr);
})();
У себя на сервере поставил задержку ответа на 3 секунды, тем самым имитируя парсинг страницы, все работает как положено.
0
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
20.12.2019, 11:29
Пардон вот правильный код
JavaScript
1
2
3
4
5
6
7
8
let arr = [];
let fun_1 = async () => await(await fetch('todos.php')).json();
let fun_2 = async () => await(await fetch('https://jsonplaceholder.typicode.com/todos/1')).json();
 
(async ()=> {
    arr.push(await fun_1(), await fun_2());
    console.log(arr);
})();
0
1 / 1 / 1
Регистрация: 29.01.2013
Сообщений: 87
21.12.2019, 17:44  [ТС]
Вы меня наверное не совсем поняли либо я не въезжаю. То что вы пишите - работает и, возможно, именно это я и буду использовать, но я не понимаю, где мне выполнять разбор спарсенной страницы. Т.е. мне нужно получить код страницы стороннего сайта, с помощью регулярок вытащить нужные мне данные и записать их в массив, с которым я дальше хочу работать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2019, 17:44
Помогаю со студенческими работами здесь

Будут ли работать другие скрипты, пока будет работать sleep()?
вопрос в том будут ли работать другие скрипты пока будет работать слип? тоесть этот скрипт стоит на сервере и выполняет определенные...

Как заставить работать do while
Печатает пока 100 строк не будут заполнены, нужно при вводе символа n закончить принятие данных и вывести те, которые ввели. Если не...

как заставить работать QT
Только установила QT. Пытаюсь скомпилировать консольную программу: #include &lt;QTextStream&gt; int main() { QTextStream...

Как заставить работать ? :)
Form1.label6.caption := FloatTostr (dosp); if Dosp &lt;=0.1 then Form1.label7.caption := '0.1'; if Dosp &gt;=0.15 then...

Как заставить работать BroadcastReceiver?
Добрый день! Собственно идея: есть стандартный плеер телефона(HTC One m7 Android 4.4.3) и проводная гарнитура с одной кнопкой. Но по...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru