Я пытаюсь вызвать API и использовать результаты, но результат обещания всегда возвращается как неопределенный.
Я думаю, что это должно быть прямым, но я новичок в обещаниях, и я 'Мы провели много часов, пытаясь понять это без какой-либо удачи.Я перепробовал так много версий.Я хочу
- Вызов API
- API вернет JSON, в котором меня интересует массив чисел внутри него
- Разобрать JSON, чтобы получить этот массив
- Использовать массив в другой функции, чтобы сделать что-то
Изначально у меня были эти две функции
//Get the references
function getReferences(articleID) {
var request = new XMLHttpRequest();
request.open("get", "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=pubmed&linkname=pubmed_pubmed_refs&retmode=json&id=" + articleID + "&api_key=0&tool=my_tool2&email=my_email@example.com", false);
request.send();
var obj = JSON.parse(request.responseText);
return obj.linksets[0].linksetdbs[0].links;
}
//use the references
function useReferences(startingArticleID) {
var references = getReferences(startingArticleID);
// do something with the array "references"
}
, и это работало хорошокроме того, иногда getReferences
будет пытаться выполнить синтаксический анализ до завершения вызова API.Поэтому я изменил код так, чтобы он выглядел следующим образом (использовал Axios, чтобы попытаться помочь с вызовами API)
async function getReferences(articleID) {
let json = await axios.get("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi? dbfrom=pubmed&linkname=pubmed_pubmed_refs&retmode=json&id=" + articleID + "&api_key=0&tool=my_tool2&email=my_email@example.com");
return json;
}
async function useReferences(startingArticleID) {
let references = await getReferences(startingArticleID);
//do something with the array references
}
Но references
всегда возвращается как undefined
со статусом ожидания.Я читал и экспериментировал с .then()
, но ценность обещания была все еще undefined
.