首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >node js递归概念

node js递归概念
EN

Stack Overflow用户
提问于 2018-01-12 13:05:16
回答 1查看 51关注 0票数 2

我是Node.js技术的新手,面临着递归概念方面的一些问题。

我有一个包含用户名列表的main.js和一个soap方法调用Soap.js包含将从用户名获取电子邮件id的soap方法。

代码语言:javascript
运行
复制
------------- Main.js ----------------
'use strict'

var emailService = require('./emailService .js').emailService ;
var emailService1 = new emailService ();

var emailList = [];
var psList = ['1062','10465','10664','10681'];
emailService1.helpdeskEmailService(psList, 'abcabc', 'abcabc', function(err,result) {
    console.log('in service -------------------------');
    if (err) {
        console.log("Error while api call :: " +err);
    } else {
        console.log("response from soap service - " +  result);
  }

});

console.log('my email list' +result);

------------- SoapService.js ----------------

'use strict'

var c_instancename = '';
var soap = require('soap');
var l_args;
var c_url = "http://airinmsbmcarmt.lntinfotech.com/arsys/WSDL/public/172.21.103.136/zlandt:FetchEmailID";

class emailService {

    constructor(p_instanceName) {
        c_instancename = p_instanceName;
    }

    helpdeskEmailService (ps_number,p_username,p_password,p_callback) {
        var l_header = {                      
              'authentication': '',
              'locale': '',
              'timeZone': '',
              'AuthenticationInfo': {
              'userName': p_username,
              'password': p_password
              }
        }

        soap.createClient(c_url, function(err, client) {      
          //var soapheader = l_header;
            client.addSoapHeader(l_header);
            var l_args = {LoginID:ps_number};
            client.EmailID(l_args, function(err, result) {
              if(err) {
                  console.log('error page');
              } else {
                  console.log('my resultttttttt in soap...');
                  p_callback(err,result);
              }
            });
        });
    }
}

module.exports.emailService = emailService;

在这种情况下,我从soap服务得到延迟响应。

我是否可以进行webservice的同步调用,因为我正在获取emailList的NULL值。

我有一个包含用户名列表和soap方法调用的main.js

Soap.js包含soap方法,该方法将从用户名获取电子邮件id。

EN

回答 1

Stack Overflow用户

发布于 2018-01-12 17:18:06

您可以从您的服务返回一个promise,如果您使用的是Node 8.0+,您还可以进行同步调用。如果不是这样,至少它使处理异步调用变得更容易。

代码语言:javascript
运行
复制
helpdeskEmailService (ps_number,p_username,p_password) {
    var l_header = {                      
          'authentication': '',
          'locale': '',
          'timeZone': '',
          'AuthenticationInfo': {
          'userName': p_username,
          'password': p_password
          }
    }

    return new Promise (function (resolve, reject) {
        soap.createClient(c_url, function(err, client) {      
          //var soapheader = l_header;
            client.addSoapHeader(l_header);
            var l_args = {LoginID:ps_number};
            client.EmailID(l_args, function(err, result) {
              if(err) {
                  console.log('error page');
                  reject(err);
              } else {
                  console.log('my resultttttttt in soap...');
                  resolve(result);
              }
            });
        });
    }
}

// You can then call like this
var promise = emailService1.helpdeskEmailService(psList, 'abcabc', 'abcabc');

promise.then((result) => {
    console.log("response from soap service - " +  result);
}).catch ( (err) => {
    console.log("Error while api call :: " +err);
});

您还可以使用await使其同步(取决于您使用的Node版本):

代码语言:javascript
运行
复制
async function waitForresult() {
    try
    {
        const result = await emailService1.helpdeskEmailService(psList, 'abcabc','abcabc');
        console.log(result);
    } catch (e) {
        console.log('Error occurred: ' + e);
    }
};

waitForresult();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48219850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档