powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Асинхронная/Отложенная обработка массива
5 сообщений из 5, страница 1 из 1
Асинхронная/Отложенная обработка массива
    #39562285
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все привет!

Подскажите как сделать такую обработку массива:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
const array = [
	[[01,02,03,04,05],[06,07,08,09,10]], // <--
	[[11,12,13,14,15],[16,17,18,19,20]], //   * Запустить 10 асинхронных функций (
	[[21,22,23,24,25],[26,27,28,29,30]], //   *     В каждую функцию передать первый массив (Например: [01,02,03,04,05])
	[[31,32,33,34,35],[36,37,38,39,40]], //   *     и только обработав его, передать второй (Например: [06,07,08,09,10])
	[[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]], //   *     Например: Умножить каждое число на 10
	[[71,72,73,74,75],[76,77,78,79,80]], //   *     и вернуть результат
	[[81,82,83,84,85],[86,87,88,89,90]], //   * };
	[[91,92,93,94,95],[96,97,98,99]]     // <--
];


То-есть в по первому массиву определить количество, и инициализировать асинхронные методы,
передать каждому методу содержимое второго уровня массивов ([01,02,03,04,05],[06,07,08,09,10]),
но так что-бы вначале был до конца отработан первый, а затем уже передавать следующий.

Что-то типа Async + Delay (но без указания времени)

Спасибо!
...
Рейтинг: 0 / 0
Асинхронная/Отложенная обработка массива
    #39562289
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то типа:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function asyncForEach(array, callback) {
	array.forEach(function(i) {
		setImmediate(() => callback(i));
	});
}

asyncForEach(array, function(array) {
	asyncForEach(array, function(array) {
		asyncForEach(array, function(int) {
			console.log(int * 10);
		});
	});
});


Но с задержкой между массивами второго уровня ([36,37,38,39,40] и пр.)
...
Рейтинг: 0 / 0
Асинхронная/Отложенная обработка массива
    #39562291
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полная задача выглядит так:

Есть база данных с огромным числом ссылок, я беру часть ссылок и делю ее на 10 потоков (массивов),
затем в каждый поток отправляю первую пачку ссылок (например 5),
и дождавшись завершения обработки (получив ответ), отправляю следующею и тд.

Спасибо!
...
Рейтинг: 0 / 0
Асинхронная/Отложенная обработка массива
    #39562325
OldBoyOdeSu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nauseous,

асинхронность это:
setTimeout
Web Worker (если логика обработки сложная, то предпочтительный вариант)
Promise - в IE отсутствует, но можно подключить любой polyfill например Q.js

Следовательно будет один главный поток - координатор, который создаёт / планирует дочерние асинхронные потоки и отслеживает их работу.
С промисами может быть полегче, если использовать Promise.all
С воркерами и таймаутами надо самому отслеживать завершение работы каждого обработчика и если все отработали, то новую пачку планировать
...
Рейтинг: 0 / 0
Асинхронная/Отложенная обработка массива
    #39562400
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nauseousПолная задача выглядит так:
Есть база данных с огромным числом ссылок, я беру часть ссылок и делю ее на 10 потоков (массивов),
затем в каждый поток отправляю первую пачку ссылок (например 5),
и дождавшись завершения обработки (получив ответ), отправляю следующею и тд.
Спасибо!
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/async_function
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Асинхронная/Отложенная обработка массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]