Подробное описание проблем, которые могут возникнуть из-за постановки в очередь, я написал в своем блоге на techgita.com.



Если вы хотите знать, как запускать каждое действие отдельно, вы можете использовать компонент постановки в очередь, который я написал.

Допустим, мы строим компонент молнии. Его структура

При инициализации компонента 1 и компонента 2 я делаю вызов API для запроса данных. Comp1 запрашивает 26000 записей, а comp2 также запрашивает 26000 записей. Теперь вышеуказанные вызовы API могут работать когда-нибудь. Но если фреймворк сгруппирует ваши вызовы API, то будет достигнут предел вашего регулятора SOQL.

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

Другое решение — использовать компонент enqueueAction. Это компонент с открытым исходным кодом, над которым я работаю.

Это то, как мы обычно называем действия в js.

Чтобы использовать компонент постановки в очередь, нам нужно внести несколько изменений в Comp5. Мы должны обернуть дочерние компоненты, из которых вызывается действие, в компонент enqueueAction.

После этого мы должны внести изменения в то, как API вызывается из Comp1 и Comp2. В .cmp файле Comp1 и Comp2 мы должны зарегистрировать 2 события.

Теперь вместо того, чтобы ставить действие в очередь, я запускаю событие add из дочернего компонента. Вы можете видеть, что я использовал setTimout(). setTimout() можно использовать, если вы запускаете событие при инициализации. Потому что, если вы запускаете событие из дочернего компонента еще до инициализации родителя, то родитель не может обработать это событие. Вы можете заменить

setTimeout($A.getCallback(() =› component.getEvent(‘add’).setParams({actionObject:action}).fire()));

с участием

component.getEvent('добавить').setParams({actionObject:action}).fire());

если вы не запускаете событие добавления при инициализации.

После того, как вы получите свой ответ, вам нужно будет запустить событие remove, чтобы удалить действие из очереди.

Я предложу вам enqueueAction только в том случае, если ваш API может превысить лимиты регулятора, если они сгруппированы вместе.

Вот ссылка на репозиторий git hub для enqueueAction Component

Если у вас есть предложения по улучшению производительности компонента enqueueAction, вы можете поделиться ими здесь или на git.