diff --git a/entities/create-entities-mqtt.ts b/entities/create-entities-mqtt.ts index 1680187..c93235d 100644 --- a/entities/create-entities-mqtt.ts +++ b/entities/create-entities-mqtt.ts @@ -15,7 +15,8 @@ export const createEntitiesMqtt = async () => { all: true, }, }); - newFeatures.forEach((d) => { + for await (const { value: d, done } of staggerEntities(newFeatures)) { + if (done) break; const homelyDevice = d.device!.toJSON(); const device = { ids: [homelyDevice.id], @@ -71,5 +72,28 @@ export const createEntitiesMqtt = async () => { } } ); - }); + } }; + +type ReturnStagger = + | { + value: T; + done: false; + } + | { + value: null; + done: true; + }; + +async function* staggerEntities( + entities: Array +): AsyncIterable> { + for (const entity of entities) { + yield { value: entity, done: false }; + await new Promise((r) => setTimeout(() => r(), 500)); + } + yield { + value: null, + done: true, + }; +}