JavaScript 中的 Promises/Fetch:如何从文本文件中提取文本

Posted

技术标签:

【中文标题】JavaScript 中的 Promises/Fetch:如何从文本文件中提取文本【英文标题】:Promises/Fetch in JavaScript: how to extract text from text file 【发布时间】:2018-10-28 07:24:57 【问题描述】:

我正在用 javascript 编写一个小程序。基本上,我想使用 Promise 和 fetch 从两个文本文件中提取文本。但是,我不知道如何从文件中获取实际文本。这是我当前的代码。

示例.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);
  )

这是 Promises...我如何从中获取文本?

【问题讨论】:

【参考方案1】:

Fetch 不会返回响应文本的承诺 - 它会返回在收到标头后可用的 Response 对象的承诺。

这样你就可以做一些很酷的事情,比如:

根据标头确定您希望如何读取响应正文。 逐步流式传输响应等。

如果您想要响应的文本 - 您可以通过 .text() Response 对象获得承诺:

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);
);

【讨论】:

一定要把catch扔进去:)。【参考方案2】:

使用异步/等待

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

【讨论】:

这不会并行获取它们。 @JulienD 是的 - 但很简单

以上是关于JavaScript 中的 Promises/Fetch:如何从文本文件中提取文本的主要内容,如果未能解决你的问题,请参考以下文章

[JavaScript]JavaScript中的Array

javascript获取html表单中的值?

JavaScript中的对象

javascript JavaScript中的枚举和词典,循环/枚举javascript对象

javascript中的DOM

JavaScript中的内置函数