我是NodeJS的新手,所以如果下面的代码不符合标准,请道歉。我想访问此函数之外的isSuccess值stepfunctions.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}