Size: a a a

JavaScript — русскоговорящее сообщество

2020 April 13

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Sergey 🛸
Правильный
Рофлишь?
источник

S🛸

Sergey 🛸 in JavaScript — русскоговорящее сообщество
Нет, обычная практика резолвить через settimeout
источник

O

Orian in JavaScript — русскоговорящее сообщество
А зачем функцию внутри промиса описывать
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Вы шутите думаю
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Обсервер не так пишется
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Он каждые 200 мс смотрит на переменную
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Не изменилась ли она
источник

ТХ

Тимур Хасанов in JavaScript — русскоговорящее сообщество
Я понимаю, что можно подписаться на событие, если есть к чему подписываться. Можно разбить код на до и после. Но как тестировщики интерфейсов вообще пишут тесты? Когда сделать - подождать - сделать и т.д
источник

S🛸

Sergey 🛸 in JavaScript — русскоговорящее сообщество
Sm•ok 😈✔️
Обсервер не так пишется
Причём тут обсервер и реактивщина?
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Тимур Хасанов
Я понимаю, что можно подписаться на событие, если есть к чему подписываться. Можно разбить код на до и после. Но как тестировщики интерфейсов вообще пишут тесты? Когда сделать - подождать - сделать и т.д
Вот тебе самый простой обсервер. Напиши класс, где ты с помощью него будешь доаьвлять значение setValue, и добавлять подписчика. После каждого вызова setValue ты будешь итерировать по подписчиками
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Sergey 🛸
Причём тут обсервер и реактивщина?
Какая реактивщина?
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Чувак каждые 200мч вызывает 1 и ту же функцию, чтобы посмотреть не изменилась ли переменная, запускаю все в холостую
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
class Observer {
  constructor(value) {
      this.value = value;
      this.subscribers = [];
 }

  subscribe (callback) {
      this.subscribers.push(callback)
  }


   set(value) {
      this.value = value;

      this.subscribers.forEach(callback =>  callback(value))
  }
}
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Сорри за кривость, я прям в чате тг напечатал
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
const something = new Observer(false);


something.subscribe((value) => {
   console.log("значение изменилось, новое значение:", value)
})
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Теперь когда хочешь изменить, то делаешь something.set(true). Все твои подписчики узнают об этом
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Ещё есть такая вещь как https://learn.javascript.ru/proxy
источник

O

Orian in JavaScript — русскоговорящее сообщество
Прокси прикольная штука, да
Спасибо что показал через классы
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Пожалуйста
источник

u

undefined in JavaScript — русскоговорящее сообщество
Тимур Хасанов
Правильный ли вот такой подход, когда нужно чего-то дождаться и затем продолжить выполнение

`visible = false;
lookAround = new Promise(observer);

function observer(resolve) {
   if (visible) {
       resolve("done!");
       return;
   }
   setTimeout(observer, 200, resolve);
}

setTimeout( () => visible = true, 3000);

lookAround
   .then( () => console.log("I see you!") )
   .then( () => console.log("Next turn") );`
правильным был бы подход, при котором ты бы завернул setTimeout в промис.
Тогда бы после setTimeout ты бы гарантированно что-то сделал.
Например:
а потом просто
const delay = ms => new Promise(resolve => setTImeout(resolve, ms))

delay(3000)
   .then(() => console.log())
   .then(() => console.log())

То есть ты преимущества промисов опять откатываешь в века колбэков
источник