Javascript onkeypress и onblur вместе делают ввод ввода слишком медленным - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь построить индикатор набора текста. Все отлично работает. Но я обнаружил, что запись в поле ввода слишком медленная.

Я использую вот так

<Input  type="textarea" :autosize="{minRows: 2, maxRows: 6}" placeholder="Type a message..." 
     v-model="u.myMsg" @on-enter="sendMsg($event,u)" @on-focus="sendSeenInfo(u)" 
     @on-keypress="run(true, u.con_id, u.user_id)" @on-blur="stopped(false,u.con_id, u.user_id)" 
></Input>

Я использую vue.js. Так что эти две функции работают, как и ожидалось, но делают набор текста медленным.

Внутри функции запуска я посылаю несколько событий сокета.

Есть идеи, как мне сделать это лучше? Спасибо

EDIT метод запуска

 run(type,con_id, uid){

        const obj = {
            con_id: con_id,
            isTyping: true
        }
        this.sendTypingNoti(1, obj, uid)
     },

sendTypingNoti метод

sendTypingNoti(type, value, uid){
        const ws = adonis.Ws()
        ws.connect()
        const chat = ws.subscribe(`noti:${uid}`)
        chat.on('ready', () => {
           const data = {
              type: type,
              input: value
           }
           chat.emit('message', data)
        })
    },

метод остановки тоже такой же.

1 Ответ

0 голосов
/ 15 января 2019

Как насчет использования vue watchers для анимации "печатания" вместо использования on-keypress.

Вот пример vue watchers с информацией типа «печатать», пока вы нажимаете клавишу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...