Caricare dati remoti in $mol non è un'API speciale — un valore asincrono è solo una proprietà reattiva scritta come se la risposta fosse già lì. La vista l'attende, mostra uno stato di caricamento e si ri-renderizza quando i dati arrivano.
Chiama la rete dentro un @ $mol_mem e restituisci il risultato già parsato. Nel codice non c'è alcuna promise, alcun await né alcuna callback:1namespace $.$${2export class $my_usersextends$.$my_users{3@ $mol_mem4users(){5return this.$.$mol_fetch.json('https://api.example.com/users')as{6id:number7name:string8}[]9}10}11}$mol_fetch sospende la fibra finché non arriva la risposta, poi il calcolo riparte e users() restituisce l'array. Mentre è in attesa, ogni vista che legge users() mostra automaticamente lo stato di caricamento integrato — non scrivi alcun flag isLoading. Non restituire tu stesso una promise da un @ $mol_mem: una promise conservata come valore tiene la cella nello stato di caricamento per sempre, vedi Risoluzione dei problemi.this.$ è il contesto del componente. Ogni servizio passa di lì: $mol_fetch per la rete, $mol_state_arg per l'URL, $mol_after_timeout per il tempo. In un test il contesto viene sostituito, così lo stesso users() manda la sua richiesta a un mock invece che alla rete, senza cambiare una riga del componente. Testing mostra quel mock.
Collega i dati risolti direttamente in una lista:1@ $mol_mem2user_names(){3return this.users().map(user=>user.name)4}Quando arriva la risposta, users() si aggiorna, user_names() si ricalcola e la lista si renderizza. Niente callback, niente useEffect.