使用async-await执行tcp客户端时收到“承诺{<pending>}”消息

时间:2019-10-08 18:39:30

标签: javascript node.js promise async-await

我正在使用telnet-client节点模块执行tcp客户端。

const Telnet = require('telnet-client')

async function wazuhRun(host) {
  let connection = new Telnet()
  let ErrCode = -1;

  let params = {
    host: host,
    port: 2345,
    negotiationMandatory: false,
    timeout: 1500
  }

  try {
  await connection.connect(params)
  ErrCode = 0;
  } catch(error) {
  ErrCode = -1;
  }
  return ErrCode;
}

const code = wazuhRun('linux345');
console.log(code);

在运行上述代码时,我得到Promise { <pending> }

请提出我的代码中可能缺少的内容

2 个答案:

答案 0 :(得分:0)

由于您是在异步函数之外使用它的,因此需要将其视为Promise:

wazuhRun('linux345').then((result) => console.log(result));

异步功能是Promises的语法糖,它们被转换为Promises,这就是为什么您将Promise挂起的原因。

如果您是从另一个异步函数中调用的,则可以使用:

const code = await wazuhRun('linux345');

编辑: 关于null返回,可能是您的函数在try / catch之前引发了错误。

 wazuhRun('linux345')
    .then((result) => console.log(result))
    .catch((error) => console.log(error));

通过在Promise中添加catch处理程序,您将能够看到异步函数中引发的所有错误。

答案 1 :(得分:0)

使用wazuhRun('linux345')。then(),它将正常工作。

from statsmodels.stats.outliers_influence import variance_inflation_factor
    def calculate_vif(features):
        vif = pd.DataFrame()
        vif["Features"] = features.columns
        vif["VIF"] = [variance_inflation_factor(features.values, i) for i in range(features.shape[1])] 
        return(vif)

features = features[list(score_table[score_table['final_score'] >= 2]['index'])]

vif = calculate_vif(features)
while vif['VIF'][vif['VIF'] > 10].any():    
    remove = vif.sort_values('VIF',ascending=0)['Features'][:1]  
    features.drop(remove,axis=1,inplace=True)  
    vif = calculate_vif(features)