Как я могу получить массив из функции? - PullRequest
0 голосов
/ 31 октября 2019

Я использую eel в python для запуска внешнего интерфейса html и хочу отобразить график с данными из python. Для этого мне нужно получить мои данные, которые я уже отформатировал для js в python. (У меня нет большого опыта работы с js)

Я не могу найти способ глобально определить chart0, а затем манипулировать им в функции и сохранить изменения. Я не могу использовать return, потому что я вызываю эту функцию из python с данными, которые я хочу получить в js.

let chart0 = [];
eel.expose(get_chart0);
function get_chart0(ch0){
  chart0 = ch0;
  console.log(chart0); // --> correct output
}
console.log(chart0); // --> empty

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Хорошо, так что все, что мне нужно, это асинхронные функции. python:

eel.init('web')

@eel.expose()
def get_chart0():
    return chart0

eel.start('index.html')

js:

async_chart0();
async function async_chart0(){
  let a = await eel.get_chart0()();
  console.log(a); 

  //whatever you need a for
}

Надеюсь, это поможет какому-то безнадежному новичку, как я был этим утром.

0 голосов
/ 31 октября 2019

Вы должны вернуть значение в вашей функции, таким образом вы можете вызвать вашу функцию, и она вместо этого вернет значение.

let chart0 = [];
eel.expose(get_chart0);
function get_chart0(ch0){
  chart0 = ch0;
  return chart0; // --> return chart0
}
console.log(eel.expose(get_chart0)); // --> directly call your get_chart0 function instead

Или в вашем случае вы можете написать его короче, как это:

function get_chart0(ch0){
   return ch0;
}

console.log(eel.expose(get_chart0));
...