Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点js递归概念_Node.js_Recursion_Asynccallback - Fatal编程技术网

Node.js 节点js递归概念

Node.js 节点js递归概念,node.js,recursion,asynccallback,Node.js,Recursion,Asynccallback,我对Node.js技术不熟悉,在递归概念中遇到了一些问题 我有一个main.js,其中包含用户名列表,还有一个soap方法调用soap.js包含soap方法,该方法将从用户名获取电子邮件id ------------- Main.js ---------------- 'use strict' var emailService = require('./emailService .js').emailService ; var emailService1 = new emailService

我对
Node.js
技术不熟悉,在递归概念中遇到了一些问题

我有一个main.js,其中包含用户名列表,还有一个soap方法调用
soap.js
包含soap方法,该方法将从用户名获取电子邮件id

------------- 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

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


Soap.js
包含从用户名获取电子邮件id的Soap方法。

您可以从服务中返回承诺,如果您使用的是Node 8.0+,您还可以使呼叫同步。如果不是,至少它使异步调用更容易处理

------------- 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;
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);
});
您还可以使用wait使此同步(取决于您使用的节点版本):

看起来像