主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
编写小程序时经常出现两个同步问题:
1. 使用 for 循环时,一个循环中的操作不会在下一个循环开始之前完成。 。 如果循环之间没有相互依赖关系,这并不是什么大问题,但如果下一个循环的开始依赖于上一个循环的结果,那么一系列的操作,比如绘图,就会出现问题。
for (let Index in Images) { //我们需要计算绘制位置,所以每次绘制图像时我们都要从上一张图像的末尾开始。 ctx.drawImage}
2.你调用服务器接口来访问数据或下载图像,但服务器仍然返回数据,然后你的代码继续执行其他代码,这显然会导致问题。
wx.downloadFile({ url: URL, success(wr) { //如果成功代码块内有其他执行代码,也可以保证成功获取数据后执行成功。 //如果下载功能是共享的等。由于总是提取计算逻辑,无法保证同步执行}});
解决方案是什么? 对于前者,网上很多解决方案都是加上sync或者await,也有的是加上setInterval。 我没有选择这些解决方案,而是使用了嵌套调用。
/** * 图像处理 */ handleOneImage: function(ctx, Images, idx) { let that = this; oneImage = image[idx]; let pro = new Promise(function(resolve,spect) { if (oneImage ==unknown) { // 绘制结束 rawoneImage(CTX, OneImage, that.data.xp) .then (issuccess => {if (issuccess == '成功') {that.handleoneImage(ctx, image, idx+1);}} ;}});返回。 }, /** * 绘制图像 */drawOneImage: function(ctx, image, xp) { let that = this; // 确保获取图像信息和绘制等操作同时完成并显示结果return let pro = new Promise (function(resolve, raise) { wx.getImageInfo({ src: image, success: function(imageInfo) { let iWidth = imageInfo.width; let iHeight = imageInfo.height; dWidth = (iWidth * 580 ) / iHeight(image, xp, 0, ctx.drawing(); xp: that.data.xp + dWidth });resolved('success' ) } });},
第二种情况:事实上,解决第一种情况的代码也用来解决第二种情况。 如果您愿意,Promise 允许您探索上面的代码。
这些解决方案也是我的小程序中的代码片段。 小程的名字叫涂佐耀。 一个漂亮的小程序,用于合成和裁剪图像。 请尝试一下。
推荐教程:《微信小程序》
PHP快速学习视频免费教程(从入门到精通)
如何学习PHP?应该去哪里学习PHP?如何才能快速学习PHP? 这里有简单的 PHP 学习教程(从初学者到专家)。 您可以保存并下载您想学习的朋友。
下载
这几篇文章你可能也喜欢:
- 如何实现小程序发送服务通知(小程序如何主动向用户发送通知)
- 如何获取小程序的unionid(如何获取小程序的页面路径)
- 生成海报的示例小程序(Java后端)(微信小程序生成海报演示)
- 什么是小程序? 有哪些功能?(什么是小程序?有哪些功能?)
- 介绍如何用小程序生成参数二维码(二维码+小程序参数)
本文由主机参考刊发,转载请注明:解决小程序中代码同步执行问题(同步小程序与异步小程序的区别) https://zhujicankao.com/123638.html
评论前必须登录!
注册