Javascript 使用Geoserver Rest API时发生承诺{<;挂起>;}错误

Javascript 使用Geoserver Rest API时发生承诺{<;挂起>;}错误,javascript,node.js,rest,geoserver,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: {

任何人都知道这一点,我如何才能得到正确的结果

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

我希望获得层列表,但当您将函数标记为
async
时,我会得到“Promise{pending}”

,默认情况下会返回一个
Promise
并且您会显式返回
Promise

要使用该值,可以
等待
函数,也可以创建一个
。然后

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

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


EDIT1:您可以使用
axios
而不是
request
,默认情况下它会返回承诺。

那么您的意思是我应该删除async?它给出了相同的错误。不,您应该删除async,但也要遵守您需要使用
wait
的承诺。然后就像我上面所做的那样使用
。很抱歉,出现了一个语法错误,忘了添加调用括号<代码>(异步()=>{})*()*在“解析”和“拒绝”调用之前删除这些“返回”。
layers().then((data)=>{
    console.log(data)
});