值未设置在 NodeJS 外部定义的变量中

value not setting in the variable which is defined outside in NodeJS

我是 NodeJS 的新手,所以如果下面的代码不符合标准,请道歉。我想访问此函数之外的 isSuccessstepfunctions.listExecutions

我试过下面的代码,但我得到的值是 undefined 没有得到预期的输出。我做了一些互联网搜索,发现在 NodeJS 中我们无法设置全局定义的值,但我有用例,我很确定这对其他人来说也是常见的情况——我想访问的地方这是我执行后的 isSuccess 值。

  const AWS = require('aws-sdk');

  const stepfunctions = new AWS.StepFunctions({
    region: process.env.AWS_REGION
  });

  
  var params = {
    stateMachineArn: 'arn:aws:states:us-west-1:121:stateMachine:test',
    maxResults: '2',
    nextToken: null,
    statusFilter: 'SUCCEEDED'
  };


var isSuccess
stepfunctions.listExecutions(params, function (err, data) {
    if (err) console.log(err, err.stack);
    else
      data.executions.forEach(function (result) {
        let params = {
          executionArn: result.executionArn
        };
        stepfunctions.describeExecution(params, function (err, data) {
          if (err) console.log(err, err.stack);
          else {
            isSuccess = 'true'
          }
        });

      });

      console.log('isSuccess: ' +isSuccess)

  });

预期输出:

isSuccess: true

但我得到了

isSuccess: undefined

你能帮我解决这个问题吗?感谢您对此的帮助和支持。

这就是你如何将它包装在 promise 上

let isSuccess;

const listExecute = function(params) {
  return new Promise((resolve, reject) => {
    stepfunctions.listExecutions(params, function (err, data) {
    if (err) reject(err);
    else
      data.executions.forEach(function (result) {
        let params = {
          executionArn: result.executionArn
        };
        stepfunctions.describeExecution(params, function (err, data) {
          if (err) reject(err);
          else {
            resolve(true)
          }
        });

      });
  });
  })
}


async function getOutout(params) {
  try {
    isSuccess = await listExecute(params);
    console.log(isSuccess, 'Output')
  } catch(e) {
    console.log(e)
  }
}

getOutout(params)

您还可以导出 listExecute,以便您可以在该文件之外使用此函数。

module.exports = {listExecute}