Аз съм абсолютен начинаещ в rxjs. За да започна да се уча да мисля в наблюдаеми, трябва да преведа концепции чрез примери на код. Имам чувството, че ако мога да видя кода за това, мога да започна да правя това сам с други концепции.
Аз НЕ искам да КОНВЕРТИРАМ обещание в наблюдаемо, искам да направя ново внедряване с помощта на Обсервируемо, което може да се държи като обещание. Как бих могъл да пренапиша следното с помощта на Observables?
constructor(){
let makeMessage2 = function(){
return new Promise(resolve, reject){
setTimeout(()=>{
var r = Math.random();
resolve("message two plus random value: " + r );
}, 1000);
}
}
this.logMessageAndResultOfCallback("message one!", makeMessage2);
}
private sideEffect1:string = "";
private sideEffect2:string = "";
logMessageAndResultOfCallback( message1:string, callback:Function ){
console.log(message1);
this.sideEffect1 = message1;
callback().then((message2)=>{
console.log(message2);
this.sideEffect2 = message2;
}
}
Предполагам, че частта, която не разбирам, е как да дефинирам функцията "обратно извикване", как да я извикам. Разбирам, че бих изчакал манипулаторите за пълно или излъчване, като makeMessage2().subscribe(message2 => console.log(message2));
, но нямам представа как да дефинирам makeMessage2
.
Това може да е напълно безсмислен въпрос, но прочетох около 10 различни въведения към rxjs и това не ми хареса. Просто трябва да съпоставя този сценарий с наблюдаем модел и мисля, че мога да го разбера.
По принцип искам да дефинирам наблюдаема функция myObs()
, която не се "изпълнява незабавно", а се "изпълнява", когато someMethod(message:string,obs:Observable)
се изпълнява. Когато myObs
се изпълнява, той трябва да направи нещо асинхронно в него (като получаване на резултата от HTTP заявка), след това да зададе следващата стойност, след което да задейства complete(), така че моят наблюдател, дефиниран в someMethod
, да може да обработи пълното и да направи нещо с резултата .
Редактиране: Не се занимавам с таймера или естествените еквиваленти в rxjs, това е само за симулиране на всяко асинхронно действие, като получаване на данни от сървъра.
Observable.create
приема функция за абонат -- която се изпълнява за всеки, който се абонира. Това не работи ли за вас? Въпросът ви наистина не е ясен. На сайта на rxjs docs има добър съветник за това как да започнете да се наблюдава от различни неща - person aarosil   schedule 31.03.2017delayTime
- person aarosil   schedule 31.03.2017