Использование обещаний наблюдать за курсором и останавливать курсор
Я не могу найти хороший способ сделать это, но вот мой основной метод. Его цель - наблюдать за состоянием объекта, пока он не найдет сообщение, соответствующее регулярному выражению.
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());