SliceMsgToLastMsg.js 1.3 KB
Newer Older
DCloud_JSON's avatar
1.2.4  
DCloud_JSON 已提交
1 2
export default class SliceMsgToLastMsg {
	constructor(arg) {
DCloud_JSON's avatar
1.2.5  
DCloud_JSON 已提交
3 4 5 6 7 8 9
		this.$ = arg
		//分割显示的速度(毫秒)
		this.t = 30
		// 要追加的消息的创建时间
		this.msgCreateTime = false
		// 是否立即结束追加
		this.stopAction = false
DCloud_JSON's avatar
1.2.4  
DCloud_JSON 已提交
10 11 12 13 14
	}
	// 所有待插入的消息数据
	msgs = ''
	// 是否正在分割消息数据
	sliceMsgIng = false
DCloud_JSON's avatar
1.2.5  
DCloud_JSON 已提交
15
	addMsg(msg) {
DCloud_JSON's avatar
1.2.4  
DCloud_JSON 已提交
16 17 18 19 20
		// console.log('msg', msg);
		this.msgs += msg
		if (this.sliceMsgIng === false) {
			this.sliceMsg()
		}
DCloud_JSON's avatar
1.2.5  
DCloud_JSON 已提交
21 22 23 24 25 26 27 28
	}
	end(){
		this.stopAction = true
	}
	sliceMsg() {
		if(this.stopAction === true){
			return //console.log('被终止');
		}
DCloud_JSON's avatar
1.2.4  
DCloud_JSON 已提交
29 30 31 32 33
		this.sliceMsgIng = true
		let msg = this.msgs.slice(0, 1)
		// console.log('msg', msg);
		// 更新最后一条消息的内容
		// console.log('this.$', this.$);
DCloud_JSON's avatar
1.2.5  
DCloud_JSON 已提交
34 35 36 37 38
		this.$.updateLastMsg(lastMsg => {
			if(this.msgCreateTime && this.msgCreateTime != lastMsg.create_time){
				return //console.log('要追加的消息不存在了,停止');
			}
			this.msgCreateTime = lastMsg.create_time
DCloud_JSON's avatar
1.2.4  
DCloud_JSON 已提交
39
			lastMsg.content += msg
DCloud_JSON's avatar
1.2.5  
DCloud_JSON 已提交
40 41
		})
		this.$.showLastMsg()
DCloud_JSON's avatar
1.2.4  
DCloud_JSON 已提交
42
		this.msgs = this.msgs.slice(1)
DCloud_JSON's avatar
1.2.5  
DCloud_JSON 已提交
43 44 45 46 47 48 49 50
		if (this.msgs.length) {
			if(this.t){
				setTimeout(() => {
					this.sliceMsg(this.msgs)
				}, this.t);
			}else{
				this.sliceMsg(this.msgs)
			}
DCloud_JSON's avatar
1.2.4  
DCloud_JSON 已提交
51 52 53 54 55
		} else {
			this.sliceMsgIng = false
		}
	}
}