承诺{<pending>}使用Geoserver Rest API时出错

时间:2019-06-24 12:39:07

标签: javascript node.js rest geoserver

任何人对此都有任何想法,我将如何获得正确的结果?

我在这里使用了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())

我希望获得图层列表,但是会得到“承诺{pending}”

1 个答案:

答案 0 :(得分:2)

默认情况下,将函数标记为async时会返回Promise,而您也将显式返回Promise

要使用该值,您可以await函数或可以建立.then链。

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

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

注意:由于您未在函数内使用任何await关键字,因此无需将其标记为async

EDIT1 :您可以使用axios代替request,默认情况下会返回promise。