承诺仍在等待中,然后阻止-如何解决?

时间:2019-01-22 15:09:40

标签: javascript typescript fetch isomorphic-javascript isomorphic-fetch-api

我有类似-

的代码
fetch(`${URL}${PATH}`)
   .then(res => {
       const d = res.json();
       console.log("data is: ", d);

       return d;
    })

它记录data is: Promise { <pending> }

在下一个代码语句中如何查看结果并加以利用?

其他问题和答案建议使用then块来解决,但我仍未解决。

2 个答案:

答案 0 :(得分:3)

res.json()是异步的。您将需要使用其他.then来获得结果。

fetch(`${URL}${PATH}`)
  .then(res => res.json())
  .then(d => {
    console.log('data is: ', d);
    return d;
  });

答案 1 :(得分:0)

好吧,如果您得到这种类型的值 Promise { <pending> } 。永远记得解决它。
因此,您的查询将解析为

fetch(`${URL}${PATH}`)
   .then(res => res.json())
   .then(console.log)
   .catch(console.error)

为了更好地理解,您可以利用 async / await 功能。上面的代码将减少为-

try{
   const res = await fetch(`${URL}${PATH}`)
   const dataAsJson = await res.json()
   console.log(data)
}
catch(ex) {
   console.error(ex)
}