任何人对此都有任何想法,我将如何获得正确的结果?
我在这里使用了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}”
答案 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。