function createAsyncBatcher<TValue, TSelected>(
fn,
initialOptions,
selector): SolidAsyncBatcher<TValue, TSelected>
function createAsyncBatcher<TValue, TSelected>(
fn,
initialOptions,
selector): SolidAsyncBatcher<TValue, TSelected>
Definiert in: async-batcher/createAsyncBatcher.ts:128
Erstellt eine Solid-kompatible AsyncBatcher-Instanz zur Verwaltung asynchroner Batches von Elementen und stellt Solid-Signale für alle zustandsbehafteten Eigenschaften bereit.
Dies ist die asynchrone Version des createBatcher-Hooks. Im Gegensatz zur synchronen Version behandelt dieser asynchrone Batcher
Merkmale
Der Batcher sammelt Elemente und verarbeitet sie in Stapeln basierend auf
Fehlerbehandlung
Der Hook verwendet TanStack Store für reaktives Zustandsmanagement. Der Parameter selector ermöglicht es Ihnen anzugeben, welche Zustandsänderungen ein erneutes Rendern auslösen, wodurch die Leistung optimiert wird, indem unnötige erneute Renderings verhindert werden, wenn irrelevante Zustandsänderungen auftreten.
Standardmäßig erfolgen keine reaktiven Zustands-Subscriptions und Sie müssen das Zustands-Tracking durch Bereitstellen einer Selector-Funktion aktivieren. Dies verhindert unnötige Renderings und gibt Ihnen die volle Kontrolle darüber, wann Ihre Komponente aktualisiert wird. Nur wenn Sie einen Selector bereitstellen, wird die Komponente neu gerendert, wenn sich die ausgewählten Zustandswerte ändern.
Verfügbare Zustandseigenschaften
Beispielanwendung
// Default behavior - no reactive state subscriptions
const asyncBatcher = createAsyncBatcher(
async (items) => {
const results = await Promise.all(items.map(item => processItem(item)));
return results;
},
{
maxSize: 10,
wait: 2000,
onSuccess: (result) => {
console.log('Batch processed successfully:', result);
},
onError: (error) => {
console.error('Batch processing failed:', error);
}
}
);
// Opt-in to re-render when items or isExecuting changes (optimized for UI updates)
const asyncBatcher = createAsyncBatcher(
async (items) => {
const results = await Promise.all(items.map(item => processItem(item)));
return results;
},
{ maxSize: 10, wait: 2000 },
(state) => ({ items: state.items, isExecuting: state.isExecuting })
);
// Opt-in to re-render when error state changes (optimized for error handling)
const asyncBatcher = createAsyncBatcher(
async (items) => {
const results = await Promise.all(items.map(item => processItem(item)));
return results;
},
{ maxSize: 10, wait: 2000 },
(state) => ({ hasError: state.hasError, lastError: state.lastError })
);
// Add items to batch
asyncBatcher.addItem(newItem);
// Manually execute batch
const result = await asyncBatcher.execute();
// Access the selected state (will be empty object {} unless selector provided)
const { items, isExecuting } = asyncBatcher.state();
// Default behavior - no reactive state subscriptions
const asyncBatcher = createAsyncBatcher(
async (items) => {
const results = await Promise.all(items.map(item => processItem(item)));
return results;
},
{
maxSize: 10,
wait: 2000,
onSuccess: (result) => {
console.log('Batch processed successfully:', result);
},
onError: (error) => {
console.error('Batch processing failed:', error);
}
}
);
// Opt-in to re-render when items or isExecuting changes (optimized for UI updates)
const asyncBatcher = createAsyncBatcher(
async (items) => {
const results = await Promise.all(items.map(item => processItem(item)));
return results;
},
{ maxSize: 10, wait: 2000 },
(state) => ({ items: state.items, isExecuting: state.isExecuting })
);
// Opt-in to re-render when error state changes (optimized for error handling)
const asyncBatcher = createAsyncBatcher(
async (items) => {
const results = await Promise.all(items.map(item => processItem(item)));
return results;
},
{ maxSize: 10, wait: 2000 },
(state) => ({ hasError: state.hasError, lastError: state.lastError })
);
// Add items to batch
asyncBatcher.addItem(newItem);
// Manually execute batch
const result = await asyncBatcher.execute();
// Access the selected state (will be empty object {} unless selector provided)
const { items, isExecuting } = asyncBatcher.state();
• TValue
• TSelected = {}
(items) => Promise<any>
AsyncBatcherOptions<TValue> = {}
(state) => TSelected
SolidAsyncBatcher<TValue, TSelected>
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.