17

I'm working on a small program in JavaScript. Basically, I want to use Promise and fetch to extract text out of two text files. However, I can't figure out how to get the actual text out of the files. Here's my current code.

sample.txt

this is
a sample
text file.

sample2.txt

this is
the second
sample file.

index.js

function getSampleText() {

  Promise.all([
  fetch('sample.txt'),
  fetch('sample2.txt')
  ]).then(allResp => {
    let sampleResp = allResp[0];
    let sample2Resp = allResp[1];
    console.log(sampleResp);
    console.log(sample2Resp);
  })
}

Here are the Promises...how do I get the text out of these?

Promises

2 Answers 2

34

Fetch doesn't return a promise for the text of a response - it returns a promise for a Response object available after headers have been received.

This is so you can do cool things like:

  • Determine how you want to read the body of the response based on the headers.
  • Stream the response progressively etc.

If you want the text of the response - you can .text() the Response objects to get a promise for that:

Promise.all([
  fetch('sample.txt').then(x => x.text()),
  fetch('sample2.txt').then(x => x.text())
]).then(([sampleResp, sample2Resp]) => {
  console.log(sampleResp);
  console.log(sample2Resp);
});
Sign up to request clarification or add additional context in comments.

1 Comment

Be sure to throw a catch in there :).
2

Use async/await

async function getSampleText() {
  console.log( (await fetch('sample.txt')).text() );
  console.log( (await fetch('sample2.txt')).text() );
}

2 Comments

This does not fetch them in parallel.
@JulienD yes - but is simple

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.