...

Сохранение большого количества элементов

Тема в разделе "Примеры сценариев", создана пользователем nazarov, 25 июн 2023.

  1. nazarov

    nazarov Активный участник

    Пачками по 30 элементов, всего 1700

    проверено на таком количестве

    Код:
    
    let promisesPromise[] = [];

    for (
    let lead of allLeads) {

            
    lead.data.__directory.id 'd4a2437a-f097-4496-b938-9e66223827fc';

            
    promises.push(lead.save())

            if(
    promises.length >= 30) {

                
    await Promise.all(promises);

                
    promises = []

            }

        };
  2. grylev

    grylev Участник

    Какие показатели по времени выполнения? Характеристики кластера Postgre?
  3. dm.nikitin

    dm.nikitin Новичок

    Написал более универсальную версию кода

    Код:
    
    async function callFuncForArray<VK>(itemsV[], func: (itemV) => Promise<K>): Promise<K[]> {
        
    let promisesPromise<K>[] = [];
        const 
    responsesK[] = [];

        for (
    let item of items) {
            
    promises.push(func(item));

            if (
    promises.length >= 30) {
                const 
    res await Promise.all(promises);
                
    responses.push(...res);
                
    promises = []
            }
        };

        if (
    promises.length 0) {
            const 
    res await Promise.all(promises);
            
    responses.push(...res);
        }

        return 
    responses;
    }
    Пример применения:
    Код:
    
    const updated_items await callFuncForArray(itemsasync current_item => {
            
    current_item.data.storage "Test";
            
    await current_item.save();

            
    await current_item.setStatus(current_item.fields.__status.variants.archive);

            return 
    current_item;
        })