Skip to content

Parallel Requests

Arun Prakash edited this page Dec 1, 2025 · 5 revisions

⚑ Parallel Requests

wordpress_client offers a built‑in way to execute requests in parallel via ParallelWordpress.

What you get:

  • Parallel list/create/update/delete/retrieve helpers on any interface
  • Stable ordering by page index for batch operations
  • Simple utilities to merge results into a single iterable

To fetch first 30 pages in parallel:

 final responses = await client.parallel.list(
    interface: client.posts,
    requestBuilder: () {
        return List.generate(
            30,
            (index) => ParallelRequest(
                page: index + 1,
                request: ListPostRequest(
                    perPage: 15,
                    page: index + 1,
                ),
            ),
        );
    },
);

The response type is Iterable<ParallelIterableResult<Post>>, where each item contains the page and the results for that page.

🧩 Merge results

Need a single ordered sequence? Use the merge helper:

final merged = await client.parallel
    .list<Post, ListPostRequest>(
        interface: client.posts,
        requestBuilder: () => /* as above */,
    )
    .merge(); // Iterable<Post>

πŸ›  Other parallel helpers

  • Create: client.parallel.create<T, R>
  • Update: client.parallel.update<T, R>
  • Delete: client.parallel.delete<R> (returns ParallelResult<bool>)
  • Retrieve: client.parallel.retrieve<T, R>

All helpers accept optional transformers and exception handlers for fine‑grained control.

πŸ“ˆ Performance

This depends on your site and network. Parallel often halves end‑to‑end time versus sequential fetching for large page ranges.

Starting Parallel...
Parallel Time Taken: 3667 ms
Starting Sequential...
Sequential Time Taken: 7437 ms

Difference: 3770 ms (50.69%)

Tip: Converting to a single stream is also supported via parallel_wordpress/extensions/parallel_result_exts.dart.

Clone this wiki locally