I'm assuming that you mean you'd like to add logic to a service worker so that it requests a resource, and then modifies the response from the network, resulting in a response that's passed back to the page that is a mix of what you'd get from the network and what the service worker added.
If so, the answer is yes, you can do that for same-origin responses, and for cross-origin responses when CORS is used. (You can't modify opaque responses, which is what you get when making a cross-origin request without using CORS.)
Here's an example of a fetch handler that responds to requests for an hypothetical /api endpoint that returns JSON my making the request to /api, and then adding in an additional field to the API response before returning the response to the page.
async function modifyAPIResponse(request) {
  const apiResponse = await fetch(request);
  const json = await apiResponse.json();
  json.extraField = 'set by fetch handler';
  return new Response(JSON.stringify(json), {
    // Ensure that the Content-Type: and other headers are set.
    headers: apiResponse.headers,
  });
}
self.addEventListener('fetch', (event) => {
  const url = new URL(event.request.url);
  if (url.pathname === '/api') {
    event.respondWith(modifyAPIResponse(event.request));
  }
});