【问题标题】:Trying to return a URL from a JSON file尝试从 JSON 文件返回 URL
【发布时间】:2019-06-11 12:15:17
【问题描述】:

一段时间以来,我一直在尝试从 JSON 列表返回 URL。我尝试过使用各种方法,但我似乎无法让它工作...... 我想知道如何返回一个值。我还没有真正用 JavaScript 做太多实验,所以我想我已经有了这个……

这里是代码:


async function getGithubPicture(username, callback) {
    let data = await fetch('https://api.github.com/users/' + username);
    let main = await data.json().then((data) => {
        return data.avatar_url.toString();
    });
    return main;
}

document.getElementById('pfp').src = getGithubPicture('harryuk');

所以我希望 getGithubpicture 从与用户名 harryuk 对应的 JSON 文件中返回一个字符串,但返回的是 [object promise],我知道它运行正常,但我想以不同的方式运行它方式,这就是我的块所在的地方

【问题讨论】:

  • 尝试拆分你的命令。让 main = 等待 data.json(); main= main.avatar_url.toString();
  • 谢谢,现在代码看起来更整洁了。我原来的问题仍然存在。
  • 您的问题是变量 main 得到了一个在返回时未评估的承诺。我不明白为什么这不起作用。

标签: javascript asynchronous ecmascript-6 promise


【解决方案1】:

异步函数总是返回AsyncFunction 对象。所以它返回承诺

async function getGithubPicture(username, callback) {
    let data = await fetch('https://api.github.com/users/' + username);
    let main = await data.json();
    return main.avatar_url.toString();
}

document.getElementById('pfp').src = await getGithubPicture('harryuk');
// or 
getGithubPicture('harryuk').then(url=> document.getElementById('pfp').src = 
url)

【讨论】:

  • 非常感谢 Arshpreet,您的回答完美。下次我会记住的。
【解决方案2】:

这是因为您尝试将值分配给图像源时没有结果。 你可以试试:

function getGithubPicture(username, callback) {
    fetch('https://api.github.com/users/' + username)
    .then((response)=>{
    	return response.json();
    })
    .then((jsonResponse)=>{
      callback(jsonResponse.avatar_url.toString());
    });
}
function updateAvatar(avatarUrl){
		document.getElementById('pfp').src = avatarUrl;
}
getGithubPicture('harryuk',updateAvatar);
<img src="" id="pfp"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多