微信小程序云开发 SDK 升级后回调函数不执行,通常是因为初始化未完成就调用了云接口,或者新版本更推荐 Promise 写法导致回调被忽略。先检查 app.js 中 wx.cloud.init 是否完成,再确认代码中是否混用了 async/await 与 success 回调。
先说结论:SDK 升级改变了异步处理机制,旧版回调风格可能与新版本基础库冲突。
- 先确认 wx.cloud.init 在调用前已完成初始化
- 先处理 Promise 链与回调函数的混用冲突
- 再验证开发者工具基础库版本是否匹配 SDK
快速处理思路
检查 app.js 初始化代码,确保 cloud env 配置正确。
检查 callFunction 调用,移除 success 回调改用 .then() 或保留回调去掉 await。
为什么会这样
云开发 SDK 迭代后,底层网络请求封装从纯回调转向 Promise 优先。
旧代码依赖 success 回调,新版本中若同时使用 await 和 success,可能因事件循环机制导致回调时机异常或不被触发。
分步处理
1. 检查初始化:在 app.js onLaunch 中调用 wx.cloud.init,确保 env 参数正确。
2. 调整调用写法:将 wx.cloud.callFunction 的 success 回调改为 .then(res => {})。
3. 更新基础库:在开发者工具详情中,将调试基础库升至稳定版本。
怎么验证是否生效
查看开发者工具 Console 面板是否有云调用日志。
登录微信云开发控制台,查看云函数调用记录是否增加。
常见坑
不要在 Page onLoad 中直接调用云函数而不等待 init 完成。
避免在同一调用中同时使用 await 和 success 回调,防止逻辑重复执行。
常见问题
还能继续用 success 回调吗?
可以,但建议逐步迁移到 Promise 写法以保持兼容性。
为什么本地正常上传后不行?
真机环境网络策略不同,需检查域名合法性和 TLS 版本。
参考来源
微信小程序官方文档 - 云开发
URL: https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html