gpt4 book ai didi

node.js - Node.js递归概念

转载 作者:太空宇宙 更新时间:2023-11-03 22:24:43 25 4
gpt4 key购买 nike

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

我有一个 main.js,其中包含用户名列表和一个肥皂方法调用 Soap.js 包含将从用户名获取电子邮件 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;

在这种情况下,我收到肥皂服务的响应较晚。

我可以对 webservice 进行同步调用吗,因为我收到了 emailList 的 NULL 值。

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

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

最佳答案

您可以从服务返回一个 promise ,如果您使用的是 Node 8.0+,您还可以使调用同步。如果不是,至少它可以更轻松地处理异步调用。

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 版本):

async function waitForresult() {
try
{
const result = await emailService1.helpdeskEmailService(psList, 'abcabc','abcabc');
console.log(result);
} catch (e) {
console.log('Error occurred: ' + e);
}
};

waitForresult();

关于node.js - Node.js递归概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48219850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com