使用node-soap库创建了一个SOAP API,但是当我尝试使用
抛出错误时throw {
Fault: {
Code: {
Value: 'soap:Sender',
Subcode: { value: 'rpc:BadArguments' }
},
Reason: { Text: 'Processing Error' }
}
};
在图书馆中,我得到了
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
这就是我目前正在做的
ssm.decrypt(args.request, password, base_key)
.then(function (res) {
console.log(res)
parseString(res, async function (err, result) {
if (err) {
//the throws causes the error
throw {
Fault: {
error: {
data: {
error
} //Error object from catch
}
}
};
} else {
//some code
}
谢谢
答案 0 :(得分:0)
在异步函数内引发错误
parseString(res, async function (err, result)...
拒绝异步函数返回的promise-没有捕获处理程序。如果parseString
同步调用其回调,则只需删除async
声明,将调用保留为
parseString(res, function (err, result)...
但是,如果parseString是异步的,则需要对其进行承诺,以便可以将错误处理到周围的promise链中。作为一个未经测试的示例:
function doParseString( res) {
return new Promise( function( resolve, reject) {
parseSting( res, function( err, result) {
err ? reject( err) : resolve( result);
});
});
}
可用于
ssm.decrypt(args.request, password, base_key)
.then( doParseString)
.then( function (result) {
// some code
})
.catch( console.log); // do something with the error
答案 1 :(得分:0)
谢谢大家的帮助,但我遇到了问题
如果对肥皂api使用了异步功能,请使用node-soap
通信需要通过回调完成
我将投掷更改为
callback({
Fault: {
error: {
data: {
error
}
}
}
});
效果很好
我在这里node-soap doc
找到了它