#node.js #asynchronous
#node.js #асинхронный
Вопрос:
пожалуйста, проверьте приведенный ниже код. в настоящее время я получаю следующий вывод (A), любая ситуация для выхода из pu (B) t, как показано ниже, я имею в виду, что перед переходом к «if condition» выполняется приведенный ниже код (if condition) :
A: { data: { topic_arn: ‘xxxx’ }, успех: true, сообщение: ‘Успешно восстановлены данные’, код состояния: 200 }
B: { data: { topic_arn: » }, успех: true, сообщение: «Успешно извлеченные данные», код состояния: 200 }
Код:
const test = async () => {
let atopic_arn = "";
if (atopic_arn == "") {
let createdArn = await functionA()
console.log("Topic Created")
atopic_arn = createdArn
}
console.log("test-toic", atopic_arn)
console.log({
"data": {
"topic_arn": atopic_arn
},
"success": true,
"message": 'Successfully retrived data',
"statusCode": 200
});
}
functionA = async () => {
return "xxxx";
}
test();
Комментарии:
1. Вы действительно помещаете одну или несколько пустых строк между каждой строкой фактического кода? Или, пожалуйста, не могли бы вы исправить форматирование, чтобы сделать это читаемым?
2. не могли бы вы перефразировать свой вопрос. Не могу действительно понять, чего вы пытаетесь достичь
3. Пожалуйста, не могли бы вы подробнее рассказать о том, что ожидается и с какой проблемой вы столкнулись?
Ответ №1:
Я не совсем уверен, что понимаю ваш вопрос, но, насколько я могу судить, вы пытаетесь выяснить, почему наш код никогда не генерирует вывод B. Пожалуйста, поправьте меня, если я ошибаюсь.
Причина, по которой вы никогда не получаете вывод B и всегда выводите только A, заключается в том, что этот блок кода:
let createdArn = await functionA()
console.log("Topic Created")
atopic_arn =createdArn
немедленно изменяет значение вашей переменной, делая невозможным вывод B. Даже если вы удалите ключевое слово await, вы все равно измените значение на promise. Единственный способ выполнить вывод B — это не переназначать переменную.