JavaScript передать переменную из одной функции в другую
Нужно передать переменную id из одной функции в другую. При выполнении получаю ошибку в строке return id; Uncaught (in promise) ReferenceError: id is not defined
async function getId() {
try {
let response = await fetch(proxyurl + url, {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=utf-8',
'Authorization': 'Bearer ' + token
},
});
let result = await response.json();
for (let i = 0; i <= result.length; i++) {
console.log(result[i].id);
}
id = result[i].id
document.getElementById('arr').textContent = (id)
//let urlIssue = 'https://sad.myjetbrains.com/youtrack/api/issues/2-24634?fields=summary,description';
console.log(id);
let objSel = document.getElementById('task')
objSel.options[i] = new Option(id);
} catch (err) {
//console.error(err);
}
return id;
};
Ответы (2 шт):
Автор решения: fortavey
→ Ссылка
Возвращайте id внутри try{}. Id обьявлен внутри блока, так что снаружи его не существует
Автор решения: qRi
→ Ссылка
Можно использовать конструкцию return new Promise(). Тогда можно получить получить id или через функцию или через .then()
async function getId() {
return new Promise( async(resolve, reject) => {
let id; //объявляем переменную id
try {
let response = await fetch(proxyurl + url, {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=utf-8',
'Authorization': 'Bearer ' + token
},
});
let result = await response.json();
for (let i = 0; i <= result.length; i++) {
console.log(result[i].id);
}
id = result[i].id // вот теперь мы сможем редактировать id
document.getElementById('arr').textContent = (id)
console.log(id);
let objSel = document.getElementById('task')
objSel.options[i] = new Option(id);
resolve( id );
} catch (err) {
console.error(err);
}
})
};
async function anotherFunc() {
const id = await getId(); // ждем пока пройдет resolve для нашего ид
console.log( id );
};
const id = getId()
id.then( data => {
console.log( data ); //data = то, что будет после выполнения resolve(id)
})