Javascript Promise.all для увеличения скорости этой функции - PullRequest
0 голосов
/ 19 января 2019
await write("video_transmitter.transmitter_assignment", "interface_command", "network_interfaces.ports[0].virtual_interfaces[0]");


var i;
for (i = 0; i < 20; i++) 
{
 await dispatch_change_request("video_transmitter.transmitter_assignment", "create_transmitter", "Click");
}

var number = 2;

var MC_Adresses_Red = []

var MC_Adresses_Blue = []

var i;
for (i = 0; i < 20; i++) 
{
MC_Adresses_Red[i] = "239.1"+number+".11."+(i+1)+":"+(10000+(i+1));
MC_Adresses_Blue[i] = "239.2"+number+".11."+(i+1)+":"+(20000+(i+1));
}

var i;
for (i = 0; i < 20; i++) 
{
await write("video_transmitter.pool["+i+"]", "transport_format_command", "ST2110_GPM");
await write("video_transmitter.pool["+i+"].constraints", "max_bandwidth_command", "b3_0Gb");
await write("video_transmitter.pool["+i+"].constraints", "standard_command", null);
await dispatch_change_request("video_transmitter.pool["+i+"]", "add_new_output", "Click");
await write("video_transmitter.pool["+i+"].output_port[0]", "interface_command", "network_interfaces.ports[0].virtual_interfaces[0]");
await write("video_transmitter.pool["+i+"].output_port[1]", "interface_command", "network_interfaces.ports[1].virtual_interfaces[0]");
await write("video_transmitter.pool["+i+"].output_port[0]", "mc_address_command",MC_Adresses_Red[i]);
await write("video_transmitter.pool["+i+"].output_port[1]", "mc_address_command", MC_Adresses_Blue[i]);
await write("video_transmitter.pool["+i+"]", "active_command", true);
} 

Это пример кода, который я пишу.Я хотел бы увеличить скорость этого кода, сохраняя при этом ожидания, поскольку они имеют решающее значение.Я слышал, что вы можете использовать обещание. Все, но я не уверен, как это сделать, любая помощь приветствуется

1 Ответ

0 голосов
/ 19 января 2019

Что-то вокруг этой строки будет частично распараллеливать выполнение.

Promise.all позволяет вам ожидать параллельный массив ожидающих обещаний.

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

var i
await Promise.all([
    write(
        'video_transmitter.transmitter_assignment',
        'interface_command',
        'network_interfaces.ports[0].virtual_interfaces[0]',
    ),
    ...Array(20)
        .fill()
        .map(() =>
            dispatch_change_request(
                'video_transmitter.transmitter_assignment',
                'create_transmitter',
                'Click',
            ),
        ),
])

var number = 2

var MC_Adresses_Red = []

var MC_Adresses_Blue = []

var i
for (i = 0; i < 20; i++) {
    MC_Adresses_Red[i] =
        '239.1' + number + '.11.' + (i + 1) + ':' + (10000 + (i + 1))
    MC_Adresses_Blue[i] =
        '239.2' + number + '.11.' + (i + 1) + ':' + (20000 + (i + 1))
}

var i
for (i = 0; i < 20; i++) {
    await Promise.all([
        write(
            'video_transmitter.pool[' + i + ']',
            'transport_format_command',
            'ST2110_GPM',
        ),
        write(
            'video_transmitter.pool[' + i + '].constraints',
            'max_bandwidth_command',
            'b3_0Gb',
        ),
        write(
            'video_transmitter.pool[' + i + '].constraints',
            'standard_command',
            null,
        ),
        dispatch_change_request(
            'video_transmitter.pool[' + i + ']',
            'add_new_output',
            'Click',
        ),
        write(
            'video_transmitter.pool[' + i + '].output_port[0]',
            'interface_command',
            'network_interfaces.ports[0].virtual_interfaces[0]',
        ),
        write(
            'video_transmitter.pool[' + i + '].output_port[1]',
            'interface_command',
            'network_interfaces.ports[1].virtual_interfaces[0]',
        ),
        write(
            'video_transmitter.pool[' + i + '].output_port[0]',
            'mc_address_command',
            MC_Adresses_Red[i],
        ),
        write(
            'video_transmitter.pool[' + i + '].output_port[1]',
            'mc_address_command',
            MC_Adresses_Blue[i],
        ),
        write('video_transmitter.pool[' + i + ']', 'active_command', true),
    ])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...