Обещание ЕСЛИ условие всегда ложно JavaScript - PullRequest
0 голосов
/ 09 марта 2020

Я использую fetch для вызова API. После успешного выполнения вызова API я получаю хороший код состояния, но при попытке оценить код состояния мое утверждение «if» всегда переходит к «else», хотя мой код состояния «200». Пожалуйста, смотрите ниже фрагмент:

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" как мой фактический response.status из asyn c функция delAPI? Я пробовал множество итераций, чтобы обойти это, и до сих пор не повезло. Любая помощь приветствуется, чтобы заставить меня двигаться в правильном направлении ...

1 Ответ

0 голосов
/ 09 марта 2020
        const res = await response.status;
    console.log(response.status);
    return res.status;

Ваша проблема здесь в том, что в переменной res уже есть http-код response.status, но вы снова возвращаете res.status, который должен быть неопределенным.

Вы просто хотите вернуть либо res, либо response.status. Кстати, я не думаю, что вам нужно ждать ответа. Статус. Это не обещание.

Кстати, мы можем сделать небольшой рефакторинг здесь:

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