Node.js 使用节点rfc时出错:客户端在关闭连接的情况下调用rfc调用
我正在尝试使用Node.js应用程序从SAP系统获取数据 请建议在我的代码中放置Node.js 使用节点rfc时出错:客户端在关闭连接的情况下调用rfc调用,node.js,sap,saprfc,Node.js,Sap,Saprfc,我正在尝试使用Node.js应用程序从SAP系统获取数据 请建议在我的代码中放置async/await,或者使用不同的方法 我尝试了许多不同的方法,但调用仍然不会等待连接完成:( 当客户端尚未连接时,您调用invoke太快。您使用的函数client.connect接受回调作为参数,即在连接建立或失败时调用的函数。这意味着您必须在该函数内调用RFC,如下所示: router.get('/', function(req, res, next) { client.connect(err =&g
async/await
,或者使用不同的方法
我尝试了许多不同的方法,但调用仍然不会等待连接完成:(
当客户端尚未连接时,您调用
invoke
太快。您使用的函数client.connect
接受回调作为参数,即在连接建立或失败时调用的函数。这意味着您必须在该函数内调用RFC,如下所示:
router.get('/', function(req, res, next) {
client.connect(err => {
if (err) {
return res.status(500).send(err);
}
client.invoke(
'RFC_READ_TABLE',
{ QUERY_TABLE: 'USR01', DELIMITER: '|' },
(err, result) => {
if (err) {
return res.status(500).send(err);
}
res.send(result);
}
)
});
});
或者,如果您更喜欢异步/等待:
router.get('/', async function(req, res, next) {
try {
await client.open();
let result = await client.call(
'RFC_READ_TABLE',
{ QUERY_TABLE: 'USR01', DELIMITER: '|' }
);
res.send(result);
} catch (err) {
return res.status(500).send(err);
}
});
router.get('/', function(req, res, next) {
client.connect(err => {
if (err) {
return res.status(500).send(err);
}
client.invoke(
'RFC_READ_TABLE',
{ QUERY_TABLE: 'USR01', DELIMITER: '|' },
(err, result) => {
if (err) {
return res.status(500).send(err);
}
res.send(result);
}
)
});
});
router.get('/', async function(req, res, next) {
try {
await client.open();
let result = await client.call(
'RFC_READ_TABLE',
{ QUERY_TABLE: 'USR01', DELIMITER: '|' }
);
res.send(result);
} catch (err) {
return res.status(500).send(err);
}
});