经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
微信小程序异步处理
来源:cnblogs  作者:bugSource  时间:2021/4/6 9:32:21  对本文有异议

前言

小程序中存在大量异步调用的接口,例如最常用的wx.login()wx.getUserInfo()wx.setStorage()wx.getStorage()wx.request(),虽然官方对部分接口也做出了同步版本,例如wx.setStorageSyncwx.getStorageSync(),但是在实际开发中始终要面对异步处理这个问题。

由于没有编写小程序的经验,一遇到异步问题果断想起了async/await,但在使用过程中看到程序的输出顺序就发现不对劲(用了跟没用一样)。百度一番后发现小程序默认不支持async/await,需要在开发者工具右上角点击详情-->本地设置-->增强编译来增强 ES6 转 ES5 的能力。

或者打插件npm install regenerator实现异步处理。

(以上两种方法我都没用,直接用了promise)

promise()

比如要实现当方法A执行完再实现方法B。

那么需要在方法A中返回一个promise,返回的promise中进行数据操作,成功的数据传入resolve,失败的结果传入reject。

接着在方法B中调用方法A,用.then 和 .catch 分别对成功和失败的结果进行处理。

例子:

  1. // 方法A
  2. testA() {
  3. return new Promise((resolve, reject) => {
  4. wx.request({
  5. url: 'xxxxxxx',
  6. success: res => {
  7. resolve(res)
  8. },
  9. fail: res => {
  10. reject('失败啦')
  11. }
  12. })
  13. })
  14. },
  15. //方法B
  16. testB() {
  17. this.testA().then(res => { // 方法A执行完后执行方法B
  18. // 填写方法B的内容
  19. ...
  20. console.log(res) // 输出内容:res
  21. }).catch(res => {
  22. console.log(res) // 输出内容:'失败啦'
  23. })
  24. }

原文链接:http://www.cnblogs.com/bugSource/p/14610518.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号