如何使用json中的变量在preload()函数中调用另一个json?

问题描述 投票:1回答:1

我在javascript中使用p5js库。我使用wrapAPI制作一些自定义API来从网上获取帖子和评论。

第一个API返回带有帖子ID的最新帖子。第二个API使用第一个API调用中的ID返回帖子的注释。

有什么好办法呢?

我的想法是用idvox替换categoriapreload()

idvox = datav.data.vox[1].idvox;

但第二个loadJSON()功能不起作用。如果我尝试使用console.log或使用post id调用变量,则返回空的Objectundefined值。

function preload(){

    var datav = loadJSON('https://wrapapi.com/use/example/example/example/latest?wrapAPIKey=API_KEY');
    categoria = datav.data.vox[1].category;
    idvox = datav.data.vox[1].idvox;
    dataC = loadJSON('https://wrapapi.com/use/example/example/example/0.0.5?categoria='+categoria+'&idvox='+idvox+'&wrapAPIKey=API_KEY');
}
javascript json api p5.js preload
1个回答
1
投票

为了在第二次调用中使用来自一个loadJSON调用的数据作为参数,您需要考虑这些是异步调用。见Loading-external-files:-AJAX, -XML, -JSON

您可以在回调函数中卸载数据,而不是直接将变量设置为返回值:

回调

回调是一个函数,它作为参数传递给另一个函数,并由该其他函数调用。使用异步函数时,回调函数很有用,因为它允许我们指定在第一个异步任务完成后执行的一些代码。

当我们使用setTimeout,setInterval和addEventListener时,我们实际上已经使用了回调。例如,下面的“doSomething”是一个回调函数:

function doSomething() {
  console.log("doing something!");
}

setTimeout(doSomething, 5000);

您将看到p5.js和jQuery中使用的回调告诉程序在收到外部数据后要做什么。

function setup() {
  loadJSON("data.json", drawData);
}

loadJSON

loadJSON加载JSON文件并返回JavaScript对象。它需要两个参数,即文件的路径和回调函数。当服务器返回JSON数据并且它已被解析时,将运行drawData,结果自动作为变量“data”传入。

function drawData(data) {
  // person 1 bubble
  fill(155, 30, 180, 180);
  ellipse(250, 200, data.person1.age * 5, data.person1.age * 5); // person1.age = 30
  fill(255);
  text(data.person1.name, 210, 200); // person1.name = Morgan

  // person 2 bubble
  fill(180, 180, 34, 180);
  ellipse(350, 200, data.person2.age * 5, data.person2.age * 5); // person2.age = 32
  fill(255);
  text(data.person2.name, 330, 200); // person2.name = Joss
}

为了您的目的,您将调整这样的代码来链接您的AJAX调用。在你的情况下,你将有一个函数进行第二次调用,你将把它传递给第一次调用loadJSON。第二个调用也将传递一个回调函数,您将用它来卸载最终数据。

© www.soinside.com 2019 - 2024. All rights reserved.