您当前的位置:网站首页>小程序>小程序中解决代码同步执行的问题 学小程序就上ki4.cc (>^ω^<),小程序

小程序中解决代码同步执行的问题 学小程序就上ki4.cc (>^ω^<),小程序

2020年07月03日 投稿作者: 围观人数:36

微信小程序页面开发 学小程序就上ki4.cc (>^ω^<)

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。我觉得WXML通过三个纬度来介绍:纵向、横向、逻辑处理。

在做小程序的时候,是不是经常遇到这两种同步问题:

1.使用for循环,一个循环里面的操作还没结束,下一个循环就已经开始了。如果循环之间没有互相依赖,问题应该还不大,但是如果下一个循环的开始依赖于上一个循环的结果,那这一系列操作就会出现问题,比如画图:

for (let index in images) {
      //每画一张图,都要在上一张图画结束才能开始,因为要计算画图位置
      ctx.drawImage
}

2.调用服务器接口访问数据、下载图片等,服务器还未返回数据,代码已经继续执行其他代码了,这明显会出问题。

wx.downloadFile({
      url: URL,
      success(wr) {
      //如果其他执行代码在success代码块里面,还能保证在成功获取数据后正常执行
      //如果下载功能是共用的,其他操作逻辑肯定就会抽离出来,这样就保证不了同步执行了。
      }
});

该怎么解决呢?
第一种情况,网上好多解决方案是加sync或者await,还有的加setInterval,这几种方案我都没有选,而且使用嵌套调用。

微信用户与姓名不匹配是什么意思? 学小程序就上ki4.cc (>^ω^<)

​微信用户与姓名不匹配是指实名认证中填写的身份证号和姓名与微信号绑定信息的不一致。解决方法:打开微信,点击“我的”,再点击“支付选项”,然后点击页面右上角的三个点图标,打开后点击“实名认证”选项,进行修改“实名认证”即可。

/**
   * 处理图片
   */
  handleOneImage: function(ctx, images, idx) {
    let that = this;
    let oneImage = images[idx];
    let pro = new Promise(function(resolve, reject) {
      if (oneImage == undefined) {
        //画图结束
        //执行一系列操作
      } else {
        //成功画图结束,执行下一张图的操作
        that.drawOneImage(ctx, oneImage, that.data.xp).then(isSuccess => {
          if (isSuccess == 'success') {
            that.handleOneImage(ctx, images, idx + 1);
          }
        });
      }
    });
    return pro;
  },
  /**
   * 画图片
   */
  drawOneImage: function(ctx, image, xp) {
    let that = this;
    //保证获取图片信息、画图等操作同步进行结束再返回结果
    let pro = new Promise(function(resolve, reject) {
      wx.getImageInfo({
        src: image,
        success: function(imageInfo) {
          let iWidth = imageInfo.width;
          let iHeight = imageInfo.height;
          let dWidth = (iWidth * 580) / iHeight;
          ctx.drawImage(image, xp, 0, dWidth, 580);
          ctx.stroke();
          that.setData({
            xp: that.data.xp + dWidth
          });
          resolve('success');
        }
      });
    });
    return pro;
  },

第二种情况:其实在解决第一种情况的代码中,也用到了解决第二种情况的代码,使用Promise,有需要的话可以研究下上面的代码。

这些解决方案也是我的一个小程序里面的代码片段,小程名字叫图作妖,一个小而美的图片合成、剪切小程序,欢迎大家体验。

推荐教程:《微信小程序》

以上就是小程序中解决代码同步执行的问题的详细内容,更多请关注ki4导航其它相关文章!

微信开发者工具的appid如何获取? 学小程序就上ki4.cc (>^ω^<)

appid获取的方法:首先打开微信公众平台并登录;然后在左边的菜单上找到设置菜单进行点击;最后在对应右边的设置内容内容中,点击【开发设置】即可。

标签

版权说明
免责声明:本文文章内容由ki4导航网发布,但不代表本站的观点和立场,具体内容可自行甄别.