在做小程序的时候,是不是经常遇到这两种同步问题:
1.使用for循环,[seo外包公司华]一个循环里面的操作还没结束▼•,下一个循环就已经开始了。如果循环之间没有互相依赖,问题应该还不大,但是如果下一个循环的开始依赖于上一个循环的结果,那这一系列操作就会出现问题,比如画图:
for (let index in images) { //每画一张图,丹阳市小程序开发哪家好都要在上一张图画结束才能开始,因为要计算画图位置 ctx…◆▪.drawImage }
2.调用服务器接口访问数据、下载图片等,宜宾市小程序开发哪家好服务器还未返回数据,锡林浩特市小程序制作公司代码已经继续执行其他代码了●◁,这明显会出问题。
wx…◇.downloadFile({ url: URL, success(wr) { //如果其他执行代码在success代码块里面,还能保证在成功获取数据后正常执行 //如果下载功能是共用的■•●▽,其他操作逻辑肯定就会抽离出来,这样就保证不了同步执行了。 } })•★★•;
该怎么解决呢?
第一种情况-=…=,21 2020.10 [苏州seo公司]微信小程序中如何调用API实现数据请求 本篇文章给大家带来的内容是关于微信小程序中如何调用API实现数据请求,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助★。 微信小程序不存在 ajax ,那么它是如,网上好多解决方案是加sync或者await,还有的加setInterval,这几种方案我都没有选□▼•,而且使用嵌套调用。
/** * 处理图片 */ 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,有需要的话可以研究下上面的代码…▪=■。
这些解决方案也是我的一个小程序里面的代码片段◇☆,小程名字叫图作妖△▼★○,一个小而美的图片合成★▪▽、剪切小程序,欢迎大家体验…■▼▷。
推荐教程▲=◁:《微信小程序》
以上就是小程序中解决代码同步执行的问题的详细内容,更多请关注久澳传媒编程栏目其它相关文章!
*请认真填写需求信息,我们会在24小时内与您取得联系。