首页 > 解决方案 > p5.j​​s api 应用程序没有返回正确的结果

问题描述

我正在使用 p5.js 制作一个 API 应用程序,它应该有一个搜索栏,当你单击搜索时,它会从值中获取一个 api,并 console.log 它(现在)

问题是,当我尝试实际单击搜索栏时,结果始终是以前的结果。换句话说,如果我首先搜索“Jack”,它将是未定义的,如果我再搜索“Jill”,我会从“Jack”中得到结果。

这是我的代码(顺便说一下,在 p5.js 中)

抓取API的文件:

let playerdata;

async function grabAPI(player) {
    if(player !== undefined && typeof(player) === "string") {
        await loadPlayer(player)
        
        console.log(playerdata)
    }
}

function loadPlayer(player) {
    let url = `https://api.slothpixel.me/api/skyblock/profile/${player}`
    
    loadJSON(url, dataReceived, dataError)
    
    return playerdata
}

function dataReceived(data) {
    playerdata = data;
    return;
}

function dataError(err) {
    playerdata = `Not Found (Error ${err.status})`;
    return;
}

制作按钮、设置页面等文件:

function setup() {
    createCanvas(windowWidth, windowHeight);
}

let input;
let search;
let nameValid;

function draw() {
    background(255, 255, 255)
    
    if(input == undefined) {
        input = createInput("")
        input.position(200, 200)
    }
    if(search == undefined) {
        search = createButton("Search")
        search.position(400, 200)
        search.mousePressed(buttonPressed)
    }
    if(nameValid !== undefined && nameValid === false) {
        text("not found", 300, 300)
    }
}

function buttonPressed() {
    if(typeof(input.value()) === "string" && input.value() !== "") {
        grabAPI(input.value())
    }
}

从我第一次运行它的事实来看,它总是“未定义”,我认为这是一个简单的变量没有在适当的地方编辑的问题,但我找不到问题出在哪里我。

谢谢阅读!

标签: javascriptp5.js

解决方案


推荐阅读