【发布时间】:2020-07-20 22:36:33
【问题描述】:
我试图将一组数据从 python 函数返回到 Javascript。我正在使用 eel python 模块。 python 函数很容易返回一个字符串,但是当我试图返回一个数组对象时,它什么也不返回给 javascript。
这里是python函数:
@eel.expose
def get_list_data(column_name):
tree = ET.parse('resources.xml')
root = tree.getroot()
column_list_data = []
for child in root.findall('column'):
if child.get('name') == column_name:
for grandchild in child:
column_list_data.append(grandchild.text)
return(column_list_data)
这里是javascript函数。
function getListData(){
let retData = eel.get_list_data("Response")();
console.log(retData);
}
getListData();
这是控制台日志显示。
Promise
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: Array(0)
【问题讨论】:
-
它似乎正在返回一个承诺。尝试在调用 JS 之前添加
async或使用Promise.resolve(...)或new Promise()语法。有很多方法可以在 JS 中解决 promise (stackoverflow.com/questions/26711243/…) -
仅将函数声明为像
async function getListData()这样的异步函数是行不通的。您必须在异步承诺上使用 await ,这会使您的函数也异步,因此需要异步声明:let retData = await eel.get_list_data("Response")();。
标签: javascript python-3.x eel