Ошибка Promise {<pending>} при работе с Geoserver Rest API - PullRequest
0 голосов
/ 24 июня 2019

Кто-нибудь имеет представление об этом, и как я смогу получить правильный результат?

Здесь я использовал свойства Promise и async / await

layers = async () => {
return new Promise((resolve, reject) => {
    let options = {
        url: `http://geoserverIP/geoserver/rest/workspaces/datastores/featuretypes.json`,
        auth: {
            'user': 'admin',
            'pass': 'geoserver'
        }
    }

    request(options, (err, resp, body) => {
        if (!err && resp.statusCode == 200) {
            return resolve(JSON.parse(body))

        } else if (!err) {
            return reject({
                status: 404,
                errors: [{
                    messages: ["Workspace or datastore not found"]
                }]
            })

        } else {
            return reject({
                status: 500,
                errors: [{
                    messages: ["Failed connection with geoserver"]
                }]
            })
        }
    })
})
}

console.log(layers())

Я ожидаю получить список слоев, но я получаю "Promise {pending}"

1 Ответ

2 голосов
/ 24 июня 2019

Когда вы помечаете функцию как async, по умолчанию возвращается Promise, вы также возвращаете Promise явно.

Чтобы использовать значение, вы можете await функцию или сделать.then цепочка.

(async ()=>{
    const data = await layers();
    console.log(data);
})();

или

layers().then((data)=>{
    console.log(data)
});

Примечание: Поскольку вы не используете ключевое слово await внутри функции, которая вам не нужначтобы пометить его как async

EDIT1: Вы можете использовать axios вместо request, по умолчанию он возвращает обещание.

...