值未设置在 NodeJS 外部定义的变量中
value not setting in the variable which is defined outside in NodeJS
我是 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}
我是 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}