Javascript 从fetch返回值并再次返回

Javascript 从fetch返回值并再次返回,javascript,ajax,api,asynchronous,fetch,Javascript,Ajax,Api,Asynchronous,Fetch,我正在进行API调用/fetch(),以检查用户的登录状态,我需要从fetch返回true或false。(不要问为什么,我只需要为工作中的项目专门做这件事,所以必须这样做) 我有一些代码如下: 返回一个fetch 并在主函数checkLoggedInStatus()之外成功返回响应 但是,如果登录状态==NotloggedIn,我想返回true 在下面的示例中,我的代码返回NotloggedIn。但不返回true 我该怎么做 谢谢 function checkLoggedInStatus()

我正在进行API调用/fetch(),以检查用户的登录状态,我需要从fetch返回
true
false
。(不要问为什么,我只需要为工作中的项目专门做这件事,所以必须这样做)

我有一些代码如下:

  • 返回一个fetch
  • 并在主函数
    checkLoggedInStatus()之外成功返回响应
  • 但是,如果登录状态==
    NotloggedIn
    ,我想返回
    true
在下面的示例中,我的代码返回
NotloggedIn
。但不返回
true

我该怎么做

谢谢

function checkLoggedInStatus() {
    let data;

    return fetch("www.MYAPI.com")
        .then((response) => response.text())
        .then((result) => {
            data = JSON.parse(result);
            return data;
        })
        .catch((error) => console.log("error", error));
};

checkLoggedInStatus().then(data => {
    console.log("data.Status", data);
    if (data === "NotLoggedIn") {
        return true;
    } else {
        return false
    };
})

使用上面的代码,通过调用
checkLoggedInStatus()创建的承诺将通过
true
false
实现。您必须使用promise.FWIW的结果,关于该代码的几个注释:1。您的代码正落入我描述的
fetch
API footgun的陷阱:您需要检查
响应。确定
以查看HTTP操作是否成功。2.
Response
对象有一个
json
方法,既可以读取响应,也可以从json解析响应,无需使用
text
然后使用
json.parse
。3.如果代码中的
/
else
在该端,则没有理由使用
,只需执行
返回数据===“NotLoggedIn”它已经是布尔值了。4.仅在使用数据的函数内声明数据。除了上述注释中提到的问题外,
checkLoggedInStatus
中的
catch()
方法的回调函数隐式返回未定义的,这意味着它将隐式地将承诺拒绝转换为承诺履行,导致调用调用代码中的实现回调。@T.J.Crowder-抱歉TJ,我花了一段时间才真正理解您的评论。你说得对,以这种方式返回代码是有效的。