我在 Node.js 中创建了一个 SOAP 服务器
const soap = require('soap');
const http = require('http');
const service = {
ImpDispatcherService: {
ImpDispatcher: {
performTest: function (args) {
queryDatabase(args.parameter1).then(result => {
return result;
});
}
}
}
};
var server = http.createServer((request, response) => {
response.end('404: Not Found: ' + request.url);
});
// Create the SOAP server
const xml = require('fs').readFileSync(`${__dirname}/ImpDispatcherService.wsdl`, 'utf8');
var server = http.createServer((request, response) => {
response.end('404: Not Found: ' + request.url);
});
server.listen(8000, 'localhost');
soap.listen(server, '/imp', service, xml, () => {
logger.info('Server initialized');
});
async function queryDatabase(pars) {
return "foo";
}
实际上,函数
queryDatabase()
返回一个Promise
,即一个ResultSet,但错误与简单的'foo'
保持相同
当我从客户端发出 SOAP 请求时,它会挂起,超时后出现错误
<missing raw response data>
我该怎么做才能响应
result
的值?
performTest: function (args) {
queryDatabase(args.parameter1).then(result => {
return result;
});
}
performTest 中没有 return 语句,因此它隐式返回 undefined,而不是 Promise。另外,
.then(result => result)
没有任何效果。 queryDatabase 创建的 Promise 将已经解析为 result
。
试试这个:
performTest: function (args) {
return queryDatabase(args.parameter1)
}