Возвращаемый массив из функции - TypeError: обратный вызов не является функцией - PullRequest
0 голосов
/ 10 марта 2020

Я пишу простую функцию js, которая возвращает массив строк, выбранных с использованием API выборки. Всякий раз, когда я пытаюсь запустить код, я получаю эту ошибку: TypeError: callback is not a function

Это мой код

function getFlavors(franchise, callback) {
    const fetch = require('node-fetch');
    let flavors= [];
    fetch('url', {
        method: 'POST',
        headers: {
            'Content-type': 'application/json'            
        },
        body: JSON.stringify({ "franchise": franchise })
    })
        .then(res => res.json())
        .then(json => {
            json.forEach(element => {
                flavors.push(element.flavor)
            });
            // console.log(flavors);
            callback(flavors);    <-- VALUES DISPLAYED ON CONSOLE
        })
        .catch(error => {
            console.log(error);
        })

}

let benJerrysFlavors = [];
getFlavors("ben&jerrys",benJerrysFlavors);

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

Есть идеи, в чем может быть проблема?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Должен вызываться с помощью функции обратного вызова, передающей данные. И затем вы можете обновить свой массив возвращенными данными:

let benJerrysFlavors = [];
getFlavors("ben&jerrys", (ret) => {
    benJerrysFlavors = ret;
});
0 голосов
/ 10 марта 2020

Попробуйте изменить с:

callback(flavors)

На:

callback.push(...flavors)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...