PM
const todos = asyncable(fetchTodos, saveTodos, [ query ]);
const todosSync = derived(todos, (todos, set) => todos.then(set), []);
{#await $todos}
<Spinner />
{:then _}
{:catch error}
<Error {error} />
{/await}
<div>
{#each $todosSync as todo, i (todo.id)}
<div>
<input value={todo.title} on:change={e => saveTodo(i, e.target.value)}>
</div>
{/each}
</div>
<button on:click={() => $query.page++}>
Next page
</button>
function saveTodo(index, title) {
todos.update($todos => {
$todos[index].title = title;
return $todos;
});
}