function createQueuer<TValue, TSelected>(
fn,
initialOptions,
selector): SolidQueuer<TValue, TSelected>
function createQueuer<TValue, TSelected>(
fn,
initialOptions,
selector): SolidQueuer<TValue, TSelected>
Definiert in: queuer/createQueuer.ts:101
Erstellt eine Solid-kompatible Queuer-Instanz zur Verwaltung einer synchronen Item-Warteschlange, die Solid-Signale für alle zustandsbehafteten Eigenschaften bereitstellt.
Merkmale
Die Warteschlange verarbeitet Elemente synchron der Reihe nach, mit optionalen Verzögerungen zwischen jedem Element. Wenn sie gestartet wird, verarbeitet sie ein Element pro Tick mit einer optionalen Wartezeit zwischen den Ticks. Sie können die Verarbeitung mit stop() und start() pausieren und fortsetzen.
Standardmäßig verwendet die Warteschlange das FIFO-Verhalten, aber Sie können LIFO oder Double-Ended-Queueing konfigurieren, indem Sie die Position beim Hinzufügen oder Entfernen von Elementen angeben.
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 queue = createQueuer(
(item) => {
// process item synchronously
console.log('Processing', item);
},
{
started: true, // Start processing immediately
wait: 1000, // Process one item every second
getPriority: (item) => item.priority // Process higher priority items first
}
);
// Opt-in to re-render when items or isRunning changes (optimized for UI updates)
const queue = createQueuer(
(item) => console.log('Processing', item),
{ started: true, wait: 1000 },
(state) => ({ items: state.items, isRunning: state.isRunning })
);
// Opt-in to re-render when execution metrics change (optimized for tracking progress)
const queue = createQueuer(
(item) => console.log('Processing', item),
{ started: true, wait: 1000 },
(state) => ({
executionCount: state.executionCount,
rejectionCount: state.rejectionCount
})
);
// Add items to process - they'll be handled automatically
queue.addItem('task1');
queue.addItem('task2');
// Control the scheduler
queue.stop(); // Pause processing
queue.start(); // Resume processing
// Access the selected state (will be empty object {} unless selector provided)
const { items, isRunning } = queue.state();
// Default behavior - no reactive state subscriptions
const queue = createQueuer(
(item) => {
// process item synchronously
console.log('Processing', item);
},
{
started: true, // Start processing immediately
wait: 1000, // Process one item every second
getPriority: (item) => item.priority // Process higher priority items first
}
);
// Opt-in to re-render when items or isRunning changes (optimized for UI updates)
const queue = createQueuer(
(item) => console.log('Processing', item),
{ started: true, wait: 1000 },
(state) => ({ items: state.items, isRunning: state.isRunning })
);
// Opt-in to re-render when execution metrics change (optimized for tracking progress)
const queue = createQueuer(
(item) => console.log('Processing', item),
{ started: true, wait: 1000 },
(state) => ({
executionCount: state.executionCount,
rejectionCount: state.rejectionCount
})
);
// Add items to process - they'll be handled automatically
queue.addItem('task1');
queue.addItem('task2');
// Control the scheduler
queue.stop(); // Pause processing
queue.start(); // Resume processing
// Access the selected state (will be empty object {} unless selector provided)
const { items, isRunning } = queue.state();
• TValue
• TSelected = {}
(item) => void
QueuerOptions<TValue> = {}
(state) => TSelected
SolidQueuer<TValue, TSelected>
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.