【问题标题】:node.js: consume promises using awaitnode.js:使用 await 使用 Promise
【发布时间】:2019-10-20 13:25:51
【问题描述】:

我有以下使用肥皂网络服务的代码:

var soap = require('soap');
var url = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
var args = { ubiNum: '1234' };

soap.createClientAsync(url).then((client) => {
  return client.NumberToWordsAsync(args);
}).then((result) => {
  console.log(result[0].NumberToWordsResult)
});

我正在尝试使用 await 重写它,这是我的尝试:

var soap = require('soap');
var url = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
var args = { ubiNum: '1234' };

var client = await soap.createClientAsync(url);
var result = await client.NumberToWordsAsync(args);
console.log(result[0].NumberToWordsResult)

但我收到以下错误:

var client = await soap.createClientAsync(url);
             ^^^^^
SyntaxError: await is only valid in async function

我错过了什么?

顺便说一句:这里有一个repl,以防有人想玩它:https://repl.it/@opensas/BasicNodeSoapClientWithPromises

【问题讨论】:

    标签: javascript node.js soap promise async-await


    【解决方案1】:

    await 仅在异步函数中有效。除了异步函数之外,您不能放置 await 语句。所以你可以重写你的代码,例如,

    (async function() {
      var soap = require('soap');
      var url = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL';
      var args = { ubiNum: '1234' };
    
      var client = await soap.createClientAsync(url);
      var result = await client.NumberToWordsAsync(args);
      console.log(result[0].NumberToWordsResult);
    })();
    

    【讨论】:

      猜你喜欢
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 2019-01-29
      • 2020-10-10
      • 2021-05-13
      相关资源
      最近更新 更多