如何从Promise返回SOAP中的数据

问题描述 投票:0回答:1

我在 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
的值?

javascript node.js asynchronous soap promise
1个回答
0
投票
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)
}
© www.soinside.com 2019 - 2024. All rights reserved.