node.js - 无法 promise 具有带有 'Async' -后缀的正常方法的 API

标签 node.js soap promise

我正在尝试使用 Node 调用 SOAP 网络服务。我已经使用了 SOAP 和请求包。

下面是代码片段:

var express = require('express');
var Promise = require("bluebird");
var app = express();
var soap = require('soap')

var url = 'http://example.com?WSDL';
let request = require('request');
let request_with_defaults = request.defaults({
  'proxy': 'http://example.com:80',
  'timeout': 5000,
  'connection': 'keep-alive'
});
let soap_client_options = {
  'request': request_with_defaults
};
var args = {
  requestId: '1406303'
};
soap.createClient(url, soap_client_options, function(err, client) {
  var soapHeader = {
    "Username": "test",
    "Password" : "test"
  };
  client.addSoapHeader(soapHeader);

  client.getESSJobStatus(args, function(err, result) {
    if(err){
      console.log('Error occured');
    }
    console.log(result);
  });
})

这里我收到错误:

throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a    See http://bluebirdjs.com/docs/error-explanations.htmlX\u000a"
TypeError: Cannot promisify an API that has normal methods with 'Async'-suffix
See http://bluebirdjs.com/docs/error-explanations.html

我已经检查过这个网址。它说创建了无法调用的异步任务。但我无法将其联系起来。

任何人都可以帮我编写代码,我该如何解决这个问题?

最佳答案

尝试 Promise.promisifyAll(require('soap'), {suffix: 'MySuffix'});

关于node.js - 无法 promise 具有带有 'Async' -后缀的正常方法的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47217532/

相关文章:

Javascript Promise 循环

php - 允许在 SOAP API 响应(PHP)中下载 PDF 文件(作为附件)

soap - SOAP 支持取消调用吗?

javascript - 我是否正确地履行了这些 promise ?

jquery - HTTP 补丁 XmlHttpRequest 支持

javascript - 在多行字符串上使用八进制字符

javascript - 在可以从 promise 中收集结果之前响应终止

javascript - 为什么这个 promise 会解决链中的第一项而不是最后一项?

node.js - 推送失败! [远程拒绝] master -> master(预接收 Hook 被拒绝)

ios - SOAP API 正在响应可选括号中的 XML。如何迎合它?