调用函数时如何解决承诺? p5.js

how to resolve promise when function is called? p5.js

var myPromise = new Promise(async function(resolve, reject){
        // idon't want to resolve after 10seconds... i want to resovle it after show_me function get called and finsih it's job.....
      setTimeout(resolve, 10000)
    });


    let xarr = [];
    let yarr = [];
    async function show_me(){
        console.log("called");

        let url = 'http://localhost:3000/get_transaction2';
        let response = await fetch(url);

        let commits = await response.json(); // read response body and parse as JSON
        for(let i= 0; i<commits.length; i++){
            let lastdate = commits[i].last_date;
            let cl = commits[i].collect_location.split(' ');
            let battery = commits[i].battery_left;
            let broked = commits[i].broken;

            collect_point = new jsPoint(cl[0],cl[1]);

            var font=new jsFont("arial","bold","10px");
            gr.drawText(`${cl}`,new jsPoint(cl[0],cl[1]),font,bluePen.color,90);
            // let x = cl[0] -700;
            // let y = -(Number(cl[1])) -400;
            let x = cl[0];
            let y = -(Number(cl[1]))
            console.log(x,y);

            xarr[i] = x;
            yarr[i] = y;


            if(battery<77 || Math.pow(x,2)+Math.pow(y,2)>=Math.pow(290,2)){

                plotPointsred(collect_point);
            }
            if(broked == 1){
                plotPointsgreen(collect_point);
            }

        }


        var greenPen=new jsPen(new jsColor("yellow"),5);
        gr.drawCircle(greenPen,new jsPoint(700,-400),290);

    }



    var cities = [];

    var recordDistance;
    var bestEver;
   async function setup() {
        await myPromise;
        s = createCanvas(1000, windowHeight);
        s.position(0,0);
        s.style('z-index','1');
        console.log("did it worked?");
        for (var i = 0; i < xarr.length; i++) {
            var v = createVector(xarr[i], yarr[i]);
            cities[i] = v;
        }

        var d = calcDistance(cities);
        recordDistance = d;
        bestEver = cities.slice();
      }

这是p5.js我想做的事情

我希望 setup() 等到 --> show_me() 被调用并完成它的工作然后解决承诺(无论如何都不必承诺对我有好处,如果我可以让 setup() 等到 show_me 被调用并完成)这样 setup() 就可以完成它的工作。

如果您不熟悉 p5.js 东西,这是我的问题。我设置了一个函数来在 10 秒后解析 promise,因为当我打开我的 index.html 时,setup() 函数会立即被调用。 setTimeout() 函数是我知道如何延迟解决承诺的唯一选项。

我不擅长英语,所以如果有什么对您来说没有意义,请告诉我。 感谢您的阅读我一直很欣赏 Whosebug 谢谢

您可以在 show_me 完成后使用 awaitresolve 调用 show_me 函数,就像@Chris 在评论中建议的那样。

var myPromise = new Promise(async function(resolve, reject){
  await show_me();
  resolve();
});

但老实说,为什么要使用一个 Promise 来检查另一个 Promise 是否已完成? 执行下面的示例会得到相同的结果。

async function setup() {
  await show_me(); // Instead of await myPromise
  ...