Доступ к загруженной таблице в drop () - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь загрузить простой CSV-файл в моем эскизе с помощью функции drop() в p5.Я могу успешно «получить» файл и вызвать loadTable(), однако я бы хотел сделать что-то с загруженной таблицей автоматически, и по какой-то причине мне кажется, что мне нужно полностью завершить функцию drop(), прежде чем я получу доступтаблица.

Мой маленький тестовый эскиз "получает" файл, который перетаскивается на холст, загружает его в таблицу и пытается распечатать getRowCount() сразу после загрузки.Это возвращает 0 .... поэтому я также настроил функцию для запуска getRowCount() при щелчке мыши, и это работает как ожидалось.

Мой тестовый CSV-файл: https://drive.google.com/open?id=1NOluhKiqMxZy10s3dAFLsHLLjoAtV6GT

Я только частично понимаю, почему это происходит, и я точно не знаю, как это обойти.Я учу себя Javascript и p5, поэтому я не знаю терминов, которые мне нужно искать, чтобы понять, что здесь происходит ...

var myTable;

function setup() {
  var canvas = createCanvas(400, 400);
  canvas.drop(getFile);
}

function draw() {
  background(220);
}

function getFile(file) {
    myTable = loadTable(file.data);

    // Do something with the table *when* I drop it...
    console.log("In getFile function: " + myTable.getRowCount());

    // Doesn't work either...
    extra(myTable);
}

function mouseClicked() {
    console.log("On mouse click " + myTable.getRowCount());
}

function extra(table_) {
    console.log("In extra function: " + table_.getRowCount());
}

1 Ответ

0 голосов
/ 20 ноября 2018

Я бы рекомендовал всегда искать в ссылку , если у вас есть вопросы о том, как работает P5.js.

Здесь является ссылкой для loadTable()функция.Он говорит:

Этот метод является асинхронным, то есть он может не завершиться до выполнения следующей строки в вашем эскизе.Вызов loadTable () внутри preload () гарантирует завершение операции до вызова setup () и draw ().

За пределами preload () вы можете предоставить функцию обратного вызова для обработки объекта:

Синтаксис

loadTable(filename, options, [callback], [errorCallback])
loadTable(filename, [callback], [errorCallback])

Вам потребуется предоставить функцию обратного вызова, которая запускается, когда функция loadTable() завершается асинхронно , загружаястол.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...