Обещание всегда неопределено - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь вызвать API и использовать результаты, но результат обещания всегда возвращается как неопределенный.

Я думаю, что это должно быть прямым, но я новичок в обещаниях, и я 'Мы провели много часов, пытаясь понять это без какой-либо удачи.Я перепробовал так много версий.Я хочу

  1. Вызов API
    • API вернет JSON, в котором меня интересует массив чисел внутри него
  2. Разобрать JSON, чтобы получить этот массив
  3. Использовать массив в другой функции, чтобы сделать что-то

Изначально у меня были эти две функции

//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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...