未在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}

最新更新