函数可以在回调中使用全局变量更新吗?

时间:2018-08-24 07:02:39

标签: python api global-variables

我正在处理一些API,需要等待其回调的回复 我试图使用全局变量来指示发送和回复状态,如下所示:

STATUS = {
'FAIL': -1,
'NONE': 0,
'SENT': 1,
'DONE': 2,
}
callbackstatus = STATUS['NONE']

我的回调是这样的:

@onCallback
def thisCallback(err):
  if err == 0:
    callbackstatus = STATUS['DONE']
  else:
    callbackstatus = STATUS['FAIL']

我想我的函数可以捕获callbackstatus的更改,但是不能:

def myfunc:
  while True:
    global callbackstatus
    if callbackstatus == STATUS['NONE']:
      callbackstatus = STATUS['SENT']
      AskforCallBack() # thisCallback will be called after this
    elif callbackstatus != STATUS['SENT']:
      break

类似的事情,在API调用thisCallback之后,callbackstatus更新为STATUS ['DONE'];但是myfunc将callbackstatus改回STATUS ['SENT']。

我了解到myfunc内部不应更改全局变量。在此阶段,我不想将所有代码都放在def之外,也不希望将它们放入Class中。

我想知道这种情况是否有解决方案?也许人们通常如何处理来自API的回调?

0 个答案:

没有答案