Наблюдаемые не являются асинхронными по своей природе - они просто основаны на толчке.Например:
console.log(1);
Observable.of(1).subscribe(() => console.log(2));
console.log(3);
Будет регистрировать 1,2,3
, а не 1,3,2
, например:
console.log(1);
Promise.resolve(1).then(() => console.log(2)); // then is `async`
console.log(3);
С другой стороны, наблюдаемые могут использовать планировщик, который использует источник асинхронности изСам браузер - как setTimeout
.Вы можете настроить планировщик Rx, передав другой параметр в функции Rx (например, from(10, Rx.scheduler.asap)
).
Хотя библиотеки обещаний существовали до собственных обещаний.В этот момент они использовали setTimeout
, каналы сообщений, наблюдателей мутаций или другие хаки, чтобы получить источник асинхронности.