Использование обещаний наблюдать за курсором и останавливать курсор

Я не могу найти хороший способ сделать это, но вот мой основной метод. Его цель - наблюдать за состоянием объекта, пока он не найдет сообщение, соответствующее регулярному выражению.

Cylon.waitForMessage(regex) {
  check(regex, RegExp);

  const observer = this.connections.find({
    name: 'messages'
  }).observe({
    changed: function (doc) {
      console.log(doc.lastMessage) // this is the last message to scan.
    }
  });
  let promise = new Promise((resolve, reject) => {
    // need to find the last message here and check if it matches regex
  }).then(() => observer.stop());

  return Promise.await(promise);
}

Каков подходящий способ сделать это? Как вы можете остановить слушателя или наблюдателя после выполнения обещания?

1 ответ

Просто переместите логику внутрь promise функция:

const observer = this.connections.find({
    name: 'messages'
});

let promise = new Promise((resolve, reject) => {
    observer.observe({
        changed: function(doc){
            if(regex.test(doc.lastMessage)){
               resolve(doc.lastMessage);
               observer.stop();
            }
        });
    });
  }).then((message) => doSomethingWithResolvedMessage());
Другие вопросы по тегам