Javascript 如何从Ajax请求函数返回JSON?

Javascript 如何从Ajax请求函数返回JSON?,javascript,jquery,Javascript,Jquery,我想建立一个网站,使用客户端调用带有JavaScript的API。我不知道怎么做,所以我在谷歌上搜索并遇到了Jquery。然后我编写了发出请求的函数。它看起来如下所示: async function makeRequest(url) { await $.getJSON(url, function (data) { console.log(data); return data; }); } 这工作正常,print语句打印接收到的数据。但是如果我从另一个函数调用这个函数,它

我想建立一个网站,使用客户端调用带有JavaScript的API。我不知道怎么做,所以我在谷歌上搜索并遇到了Jquery。然后我编写了发出请求的函数。它看起来如下所示:

async function makeRequest(url) {
  await $.getJSON(url, function (data) {
    console.log(data);
    return data;
  });
}
这工作正常,print语句打印接收到的数据。但是如果我从另一个函数调用这个函数,它不会返回任何东西。每次都是未定义的。例如:

document.addEventListener("DOMContentLoaded", async function () {
  var players = await makeRequest(
    "https://phijoto.ddns.net/Playtime/playtime.json"
  );
  console.log(players);
});

async function makeRequest(url) {
  await $.getJSON(url, function (data) {
    console.log(data);
    return data;
  });
}

如果我运行它,它会通过第二个print语句打印出接收到的数据,但第一个语句总是返回“undefined”。对此我能做些什么?

您必须
makeRequest
返回一些内容

另外:不要将回调和承诺混为一谈,充其量这会让代码变得混乱

async function makeRequest(url) {
  const data = await $.getJSON(url);
  console.log(data);
  return data;
}

这很有效,非常感谢。除了then()之外,回调中的返回通常无处可返回。在这种情况下确实如此