最近在写小程序,有点折磨
1、关于图片抖动闪烁问题
检查一下,是不是图片没有加高度,我加了高度之后就不闪烁了
2、关于异步串行
这个功能呢,是要实现一个假的进度条效果,模拟文件一个个上传完成的过程,其中就要实现异步操作顺序执行的效果,这也就是异步串行。
为了简单起见,直接使用promise来实现,es5 的我也不太会...
话不多说,直接上代码:
// 显示进度动画效果
let loadIngData = uploadData[0]
let fulFilData = uploadData[1]
let promise = Promise.resolve();
loadIngData.data.forEach((item) => {
promise = promise.then(() => {
return that.animateItem(item, loadIngData, fulFilData)
})
})
promise.then(() => {
console.log('全部完成');
});
/**
* 串行动画
*/
animateItem(item, loadIngData, fulFilData) {
let that = this;
return new Promise(resolve => {
setTimeout(() => {
item.percent = 100;
fulFilData.data.push(item);
that.setData({
['uploadData[0].data']: loadIngData.data,
['uploadData[1].data']: fulFilData.data,
});
resolve();
}, 500);
});
}
其中,关键就是这个 animateItem
函数,它返回一个promise对象,并且通过定时完成这个promise,item.percent 是我的进度数据,setData 用于刷新小程序页面
也可以封装的更通用一些,比如可以控制执行时间、自定义更多的操作,各位大佬应该可以实现,我就不献丑了