Как сделать функцию вызова общего API, используя fetch - PullRequest
1 голос
/ 06 июля 2019

Я пытаюсь создать общую функцию, которая будет обрабатывать все мои вызовы API из любого места

Я использую реагирование ":" ^ 16.8.6 "и выборку для вызова API

Пока что я должен сделать это

Helper.js

export function ApiHelper(url, data = {}, method = 'POST') {
    let bearer = 'Bearer ' + localStorage.getItem('user_token');
    var promise = fetch(url, {
        method: method,
        withCredentials: true,
        // credentials: 'include',
        headers: {
            'Authorization': bearer,
            'X-FP-API-KEY': 'chaptoken', 
            'Content-Type': 'application/json'
        }
    })
    .then(res => res.json())
    .then(
        (result) => {
            console.log(result);
        },
        (error) => {
            error = error;
        }
    )
}

export function AnyOtherHelper() {
    return 'i am from helper function';
}

А вот откуда я вызываю эту функцию

componentDidMount() {
    let url = `http://localhost/project/api/getdata`;
    let op = ApiHelper(url);
}

когда я утешаю результат then я получаю соответствующий результат, но то, что я хочу вернуть в ответ, как я могу выполнить эту часть, беспокоит меня Даже я пытаюсь сохранить результат в глобальной переменной, и он не работает. Также я должен возвращать ответ только тогда, когда обещание выполнено.

1 Ответ

4 голосов
/ 06 июля 2019

Вы делаете асинхронный вызов из вашей вспомогательной функции, а это значит, что вам придется возвращать обещание из вашей вспомогательной функции следующим образом -

export function ApiHelper(url, data = {}, method = 'POST') {
    let bearer = 'Bearer ' + localStorage.getItem('user_token');
    return fetch(url, {  // Return promise
        method: method,
        withCredentials: true,
        // credentials: 'include',
        headers: {
            'Authorization': bearer,
            'X-FP-API-KEY': 'chaptoken',
            'Content-Type': 'application/json'
        }
    })
        .then(res => res.json())
        .then((result) => {
            console.log(result);
            return result;
        }, (error) => {
            error = error;
        })
}

USAGE

componentDidMount() {
    let url = `http://localhost/project/api/getdata`;
    ApiHelper(url)
    .then(resposnse => {
        console.log(resposnse);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...