-1

首先,我确保为我在这里讨论的问题编写一个快速演示https://codesandbox.io/s/exciting-swirles-7cs3s

但本质上,使用该isomorphic-fetch库,我遇到了一个问题,我无法真正获得函数的价值,或者你可能会说,分辨率fetch()

import fetch from "isomorphic-fetch";

async function test() {
  return await fetch("https://google.com", { mode: "no-cors" });
}

let t = test();
console.log(t);

结果是

在此处输入图像描述

现在我也考虑过fetch()像这样使用的另一种方式

fetch("https://google.com", { mode: "no-cors" })
  .then(response => response.text())
  .then(data => console.log(data));

它实际上提供了一个字符串,但如果可能的话,我更喜欢第一种方式?我也很可能没有正确使用 fetch 。

4

3 回答 3

2

试试这样:

import fetch from "isomorphic-fetch";

async function test() {
  const response = await fetch("https://google.com", { mode: "no-cors" });
  return response.text();
}
async function main() {
  let t = await test();
  console.log(t);
}
main();

您需要等待承诺,这意味着您需要一个异步函数。

于 2020-07-21T04:42:14.780 回答
0

fetch 将返回一个承诺,而不是一个字符串。在您的第二个示例中,您调用.text()它。你将不得不在 asyc/await 中做类似的事情

于 2020-07-21T04:39:56.097 回答
0

使用t.then(res => console.log(res));它将返回response对象。

因为你有async功能test并且你不await喜欢它,await test()所以它会返回promise

根据您的评论,您应该使用await test(). 但是你只能await在里面使用,async所以我建议使用如下的包装函数。

import fetch from "isomorphic-fetch";

async function test() {
  return await fetch("https://google.com", { mode: "no-cors" });
}

async function wrapper() {  
  let t = await test();
  console.log(t.text());
}

wrapper();
于 2020-07-21T04:42:55.453 回答