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使此同步(取决于您使用的节点版本):
看起来像