承诺永远是不确定的

时间:2018-12-31 05:15:55

标签: javascript promise

我正在尝试调用API并使用结果,但是promise结果总是以未定义的形式返回。

我认为这应该是直截了当的,但是我对诺言并不陌生,我花了很多时间试图弄清楚这一点,但没有任何运气。我尝试了很多版本。我想

  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

0 个答案:

没有答案