小程序中解决代码同步执行的问题

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

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

1

2

3

4

for (let index in images) {

//每画一张图,都要在上一张图画结束才能开始,因为要计算画图位置

ctx.drawImage小白轻松搭建系统点我wcqh.cn

}

登录后复制

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

1

2

3

4

5

6

7

wx.downloadFile({

url: URL,

success(w小白轻松搭建系统点我wcqh.cnr) {

//如果其他执行代码在success代码块里面,还能保证在成功获取数据后正常执行

//如果下载功能是共用的,其他操作逻辑肯定就会抽离出来,这样就保证不了同步执行了。

}

});

登录后复制

该怎么解决呢小白轻松搭建系统点我wcqh.cn

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22小白轻松搭建系统点我wcqh.cn

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

/**

* 处理图片

*/

handleOneImage: function(ctx, images, idx) 小白轻松搭建系统点我wcqh.cn{

let that = this;

let oneImage = images[idx];

let pro = new Promise(function(resolve, reject) {

if (one小白轻松搭建系统点我wcqh.cnImage == undefined) {

//画图结束

//执行一系列操作

} else {

//成功画图结束,执行下一张图的操作

that.drawOneImage(ctx, oneImage, that.小白轻松搭建系统点我wcqh.cndata.xp).then(isSuccess => {

if (isSuccess == success) {

that.handleOneImage(ctx, images, idx + 1);小白轻松搭建系统点我wcqh.cn

}

});

}

});

return pro;

},

/**

* 画图片

*/

drawOneImage: function(ctx, image, xp) {

let that = this;

//保证获取图片信息、画图小白轻松搭建系统点我wcqh.cn等操作同步进行结束再返回结果

let pro = new Promise(function(resolve, reject) {

wx.getImageInfo({

src: image,

success: 小白轻松搭建系统点我wcqh.cnfunction(imageInfo) {

let iWidth = imageInfo.width;

let iHeight = imageInfo.height;

let dWidth = (iWidt小白轻松搭建系统点我wcqh.cnh * 580) / iHeight;

ctx.drawImage(image, xp, 0, dWidth, 580);

ctx.stroke();

that.setData({

xp: that.data小白轻松搭建系统点我wcqh.cn.xp + dWidth

});

resolve(success);

}

});

});

return pro;

},

登录后复制

第二种情况:其实在解决第一种情况的代码中,也用到了解决第二种情况的代码,使用Promi小白轻松搭建系统点我wcqh.cnse,有需要的话可以研究下上面的代码。

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

推荐教程:《微信小程序

以上就是小程序中解决代码同小白轻松搭建系统点我wcqh.cn步执行的问题的详细内容,更多请关注php中文网其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞187 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容