异步获取功能

时间:2018-07-13 18:04:17

标签: javascript async-await fetch

我正在尝试创建一个函数,该函数将通过fetch向我的API发送请求并等待结果-如果返回数据,则我希望该函数返回true,否则返回false

const loggedIn = async () => {
  const response = await fetch(ENDPOINT_URL, {
    method: "POST",
    credentials: "include",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      query: query,
    })
  })
  const json = await response.json()

  // data gets logged
  console.log(json.data)

  if(json.data) {
    return true
  } else {
    return false
  }
}

如果我致电loggedIn(),我仍然收到Promise {<pending>}吗?

1 个答案:

答案 0 :(得分:0)

一个async函数返回一个Promise。从调用者的角度来看,它与其他返回承诺的函数没有什么不同。调用它时,您会得到一个需要处理的承诺,而不是价值,因为这将需要阻止。

听起来像您希望它阻止您的代码。为此,请从另一个async函数调用它:

(async () => {
  try {
    console.log(await loggedIn()); // true or false
  } catch (e) {
    console.log(e);
  }
})();