云函数逻辑可以分为先执行A,再执行B。
我要达到的效果是在执行A之后立即返回结果给小程序端,减少用户等待时间,然后在后台默默执行B
自问自答:在Mr.Zhao大佬的指点下,经过一番调试,结论是云函数A中调用云函数B时,直接去掉await就是异步延迟执行,完全符合需求。
但是注意一下,nodejs8.9环境下这样运行不成功,nodejs10.15下可以。
另外可能因为平台对云函数计费的考虑,即使异步调用,云开发控制台日志显示的云函数A的运行时间显示的与同步执行时间相当,包含了云函数B的执行时间。但实际运行确实是异步调用,从小程序端监控云函数A的响应时间可以判别。所以即使采用异步调用,如果云函数B3秒超时,A也会3秒超时,设置云函数的超时时间要注意一下这个问题。
官方文档对nodejs8异步问题也有特别说明,后来才看到的,贴上来分享给大家:
https://docs.cloudbase.net/cloud-function/deep-principle
目前使用addDelayedFunctionTask有几个问题:
1、必须最快在6秒之后执行,而我希望实现能立即执行,0秒。
2、目前还不支持自识别环境 DYNAMIC_CURRENT_ENV,这样容易造成发布事故。
3、该调用过程需要0.5秒左右耗时。
云函数代码中途想返回结果,不可行。我的话,会返回小程序端,判断后再执行B