我尝试在类中创建通用request
方法。
它应该是向API发出请求,获取结果(以XML格式),将结果解析为JSON并负责错误处理的中心位置。
对于解析我使用node-xml2js,什么适用于回调。
如何从回调中返回结果,所以在调用函数令牌后我可以使用JSON?
现在它返回一些奇怪的结果(可能是parser.parseString()
)
{
comment: '',
sgmlDecl: '',
textNode: '',
tagName: '',
doctype: '',
procInstName: '',
procInstBody: '',
entity: '',
attribName: ''
}
以下是代码:
class Foo {
token(){
// ...
return this.request(uri, xml)
}
request(uri, xml) {
// ...
return rp.post(options).then(response=>{
return parser.parseString(response.body, (err, result) => {
// I can see the correct JSON result in the console
console.log(JSON.stringify(result))
return JSON.stringify(result)
})
}).catch(err=>{
console.log(err)
})
}
}
// usage
const foo = new Foo()
foo.token().then(res => {
console.log(res) // no result
})
答案 0 :(得分:2)
你可以用诺言来实现它。通过承诺链,它可以解决。
request = (uri, xml) => {
return new Promise((resolve, reject) => {
rp
.post(options)
.then(response => {
return parser.parseString(response.body, (err, result) => {
resolve(JSON.stringify(result))
})
})
.catch(err => {
reject(err)
})
});
}