我正在尝试做一个小功能,以通过大型项目Brython(浏览器Python)从Spotify的API获取响应。
问题在于,当我尝试获取localStorage['apiResponse']
时似乎无法正常工作,因为Python似乎不等待on_complete
完成并继续执行主函数而不必担心localStorage目前为空(这使我得到了空字符串而不是API响应。
我尝试了很多事情,例如set_timeout()
或aio.sleep
(在异步函数中),但它们都不等待执行结束并继续执行程序的其余部分
while
循环还会冻结浏览器...(如this question中所述)
from browser import ajax #to make requests
from browser.local_storage import storage as localStorage #to access HTML5 Local Storage
import json #to convert a json-like string into a Python Dict
#Request to the API
def on_complete(req):
if req.status==200 or req.status==0:
localStorage['apiResponse'] = req.text
else:
print("An error occured while asking Spotify for data")
def apiRequest(requestUrl, requestMethod):
req = ajax.ajax()
req.bind('complete', on_complete)
req.open(requestMethod, requestUrl, True)
req.set_header('Authorization', localStorage['header'])
req.send()
localStorage['header']
中有一个我的令牌头,供那些想知道的人使用。
问题并非出自API的请求,因为我可以在Chrome DevTools的“网络”标签中看到该请求。
Python 3和Brython 3.8.7