【发布时间】:2021-03-15 19:07:15
【问题描述】:
我有两个主要功能。第一个从 API 获取 SOAP 数据。第二个将其解析为 json,然后将其格式化为我需要存储的对象。我一直在记录并查看返回值,到目前为止,一切都很好。但是,我从我的测试文件中调用 exports.createReturnLabel ,我只能看到 Promise { <pending> } 。我在最后一个函数返回一个值。这段代码对你来说看起来很奇怪吗?我该如何清理它?
const soapRequest = require('easy-soap-request');
const xmlParser = require('xml2json')
exports.createReturnLabel = async () => {
const xml = hidden
const url = 'https://ws.paketomat.at/service-1.0.4.php';
const sampleHeaders = {
'Content-Type': 'text/xml;charset=UTF-8',
};
const auth = async () => {
const {
response
} = await soapRequest({
url: url,
headers: sampleHeaders,
xml: xml,
timeout: 2000
});
const {
body,
statusCode
} = response;
return body
}
const fetchLabel = async () => {
const soapData = await auth();
try {
const json = xmlParser.toJson(soapData)
const labelData = JSON.parse(json)["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ns1:getLabelResponse"]
return {
courier: 'dpd',
tracking_number: labelData["return"]["paknr"],
barCode: labelData["return"]["barcodecontent"],
printLabel: labelData["return"]["label"],
_ref: null
}
} catch (e) {
return (e)
}
}
return fetchLabel()
}
从我的测试文件调用return console.log(file.createReturnLabel())
【问题讨论】:
-
应该是:
return console.log(await file.createReturnLabel()) -
好吧,你返回的是一个承诺而不是一个结果。你应该在你的测试中
await它。
标签: javascript promise