Javascript 使用Geoserver Rest API时发生承诺{<;挂起>;}错误
任何人都知道这一点,我如何才能得到正确的结果 我在这里使用了Promise和async/await属性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: {
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)
});