Javascript 从fetch返回值并再次返回
我正在进行API调用/fetch(),以检查用户的登录状态,我需要从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()
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,我花了一段时间才真正理解您的评论。你说得对,以这种方式返回代码是有效的。