Promise IF条件始终为假JavaScript

问题描述 投票:0回答:2

我正在使用访存进行API调用。成功进行API调用后,我得到了一个良好的状态代码,但是当尝试评估状态代码时,即使我的状态代码为“ 200”,我的“ if”语句也总是变为“ else”。请参见以下代码段:

const fetch = require("node-fetch");
var accessToken = "Bearer <ACCESS TOKEN>";
var url = '<URL>';
var headers3 = {
    'Authorization': accessToken
};

const delAPI = async url => {
    try {
        const response = await fetch(url, {method: "DELETE", headers: headers3});
        const res = await response.status;
        console.log(response.status);
        return res.status;
    } catch (error) {
        console.log(error);
    }
};

delAPI(url).then(
    status => {
        const res = status;
        if (res === 200) {
            console.log("Integration has been deleted");
        } else {
            console.log("Integration is either disabled or not installed");
        }
    });

我认为问题在条件((res === 200)”之内,并且它可能未将“ res”评估为来自异步函数delAPI的实际response.status?我已经尝试了无数次迭代来解决此问题,并且到目前为止还没有运气。感谢您提供任何帮助以使我朝正确的方向前进。...

javascript node.js if-statement promise httpresponse
2个回答
0
投票
        const res = await response.status;
    console.log(response.status);
    return res.status;

您的问题是,变量res已经在其中包含response.status http代码,但是您再次返回res.status,应该未定义。

您只想返回res或response.status。顺便说一句,我认为您不需要等待response.status。这不是一个承诺。

附带说明,我们可以在此处进行一些重构:

status => {
        if (status === 200) {
            console.log("Integration has been deleted");
        } else {
            console.log("Integration is either disabled or not installed");
        }
    });

0
投票

尝试

res == 200

因为res可能不是数字


0
投票

您两次声明const res,并且不允许在相同范围或相同块中重新声明或重新分配现有const变量。

© www.soinside.com 2019 - 2024. All rights reserved.