178 lines
3.9 KiB
JavaScript
178 lines
3.9 KiB
JavaScript
/**
|
||
* @author zhouyangejie
|
||
* @summary 消息队列测试
|
||
*/
|
||
|
||
const TOUCH_MOVE_COUNT = 10;
|
||
let moveCount = 0;
|
||
let eventCount = 0;
|
||
|
||
Page({
|
||
data: {
|
||
// status success fail ready
|
||
testList: [
|
||
{
|
||
eventName: 'touchStart',
|
||
status: 'ready'
|
||
},
|
||
|
||
...new Array(TOUCH_MOVE_COUNT).fill(
|
||
{
|
||
eventName: 'touchMove',
|
||
status: 'ready'
|
||
}
|
||
),
|
||
|
||
{
|
||
eventName: 'touchEnd',
|
||
status: 'ready'
|
||
},
|
||
],
|
||
// success not-move-all-success error
|
||
status: '',
|
||
|
||
info: {
|
||
'test-success': '测试成功',
|
||
'test-not-move-all-success': '测试成功(toucheMove事件不足)',
|
||
'test-error': '测试失败'
|
||
},
|
||
|
||
isMoving: false,
|
||
|
||
messageList: [],
|
||
|
||
scrollTop: 360,
|
||
isTestOver: false,
|
||
},
|
||
|
||
setStatus(index, status) {
|
||
const curTestEvent = this.data.testList[index];
|
||
if (curTestEvent) {
|
||
this.setData(`testList[${index}].status`, status);
|
||
}
|
||
|
||
if (status === 'fail') {
|
||
this.setData('isTestOver', true);
|
||
this.setData('status', 'test-error');
|
||
}
|
||
},
|
||
|
||
|
||
noticeEvent() {
|
||
|
||
if (this.data.isTestOver) {
|
||
return;
|
||
}
|
||
|
||
const curEventIndex = eventCount - 1;
|
||
const curMessageEventName = this.data.messageList[curEventIndex];
|
||
const curTestEvent = this.data.testList[curEventIndex];
|
||
const curTestEventName = curTestEvent.eventName;
|
||
|
||
if (curTestEventName === 'touchStart') {
|
||
this.setStatus(curEventIndex, curMessageEventName === 'touchStart' ? 'success': 'fail');
|
||
} else if (curTestEventName === 'touchMove') {
|
||
if (curMessageEventName === 'touchEnd') {
|
||
this.setStatus(this.data.testList.length - 1, 'success');
|
||
} else {
|
||
this.setStatus(curEventIndex, curMessageEventName === 'touchMove' ? 'success' : 'fail');
|
||
}
|
||
} else if (curTestEventName === 'touchEnd') {
|
||
if (curMessageEventName === 'touchMove') {
|
||
this.data.testList.splice(curEventIndex, 0, {
|
||
eventName: 'touchMove',
|
||
status: 'success'
|
||
});
|
||
this.setData('testList', this.data.testList.slice());
|
||
} else {
|
||
this.setStatus(curEventIndex, curMessageEventName === 'touchEnd' ? 'success' : 'fail');
|
||
}
|
||
}
|
||
},
|
||
|
||
onTouchStart(e) {
|
||
this.setData('isMoving', true);
|
||
this.pushMessage('touchStart');
|
||
},
|
||
|
||
onTouchMove(e) {
|
||
moveCount++;
|
||
this.pushMessage('touchMove');
|
||
if (!this.data.isTestOver) {
|
||
this.autoScroll();
|
||
}
|
||
},
|
||
|
||
onTouchEnd(e) {
|
||
this.setData('isMoving', false);
|
||
this.pushMessage('touchEnd');
|
||
this.handleResult();
|
||
this.setData('isTestOver', true);
|
||
},
|
||
|
||
handleReset() {
|
||
eventCount = 0;
|
||
moveCount = 0;
|
||
this.setData({
|
||
isTestOver: false,
|
||
messageList: [],
|
||
isMoving: false,
|
||
status: '',
|
||
scrollTop: 0,
|
||
testList: [
|
||
{
|
||
eventName: 'touchStart',
|
||
status: 'ready'
|
||
},
|
||
|
||
...new Array(TOUCH_MOVE_COUNT).fill(
|
||
{
|
||
eventName: 'touchMove',
|
||
status: 'ready'
|
||
}
|
||
),
|
||
|
||
{
|
||
eventName: 'touchEnd',
|
||
status: 'ready'
|
||
},
|
||
]
|
||
});
|
||
},
|
||
|
||
handleResult() {
|
||
|
||
if (this.data.isTestOver) {
|
||
return;
|
||
}
|
||
|
||
const messageList = this.data.messageList;
|
||
if (
|
||
messageList[0] === 'touchStart' &&
|
||
messageList[messageList.length - 1] === 'touchEnd'
|
||
) {
|
||
if (moveCount < TOUCH_MOVE_COUNT) {
|
||
this.setData('status', 'test-not-move-all-success');
|
||
} else {
|
||
this.setData('status', 'test-success');
|
||
}
|
||
} else {
|
||
this.setData('status', 'test-error');
|
||
}
|
||
},
|
||
|
||
pushMessage(eventName) {
|
||
console.log('dev:', eventName);
|
||
eventCount++;
|
||
this.setData('messageList', [...this.data.messageList, eventName]);
|
||
this.noticeEvent();
|
||
},
|
||
|
||
//滚动条至最底部
|
||
autoScroll() {
|
||
const scrollTop = moveCount * 40;
|
||
this.setData({scrollTop});
|
||
}
|
||
});
|
||
|