我的代码如下所示。在两种情况下我都返回null时会引发错误。我也应该在函数末尾返回null吗?我担心这会使功能不等待完成
>>> import urllib.request
>>> url = "https://python.org"
>>> http_response = urllib.request.urlopen(url)
>>> url_redirected = http_response.geturl()
>>> print(url_redirected)
https://www.python.org/
答案 0 :(得分:0)
错误消息是正确的-您没有从函数中返回任何内容,这与返回undefined
相同。相反,您要做的是从传递给bwipjs.toBuffer()
的函数回调中返回null。该内部函数的返回值不会传播到外部函数。
如果仅从函数的顶层返回null,则可以停止该错误消息,但是代码将无法正常工作。函数返回的值不是promise后,Cloud Functions将关闭该函数内部启动的所有异步工作。它可能似乎什么也不做。
您需要做的是返回一个承诺,当您的函数中的所有异步工作都完成时,该承诺就会解决。现在,这看起来像是对toBuffer()
的调用,以及对实时数据库的update()
的调用。
您可能会发现函数中的documentation on async programming很有帮助。您可能还想看这个video series on dealing with promises in Cloud Functions。