คำถามติดแท็ก rxjs

Reactive Extensions สำหรับ JavaScript (RxJS) คือชุดของไลบรารีสำหรับการเขียนโปรแกรมแบบอะซิงโครนัสและตามเหตุการณ์โดยใช้คอลเล็กชันที่สังเกตได้และองค์ประกอบสไตล์ Array Extras

1
การเชื่อมโยง RxJS Observables จากข้อมูล http ใน Angular2 ด้วย TypeScript
ฉันกำลังพยายามสอนตัวเอง Angular2 และ TypeScript หลังจากทำงานกับ AngularJS 1 อย่างมีความสุขในช่วง 4 ปีที่ผ่านมา! ฉันต้องยอมรับว่าฉันเกลียดมัน แต่ฉันแน่ใจว่าช่วงเวลาที่ยูเรก้าของฉันอยู่ใกล้แค่เอื้อม ... อย่างไรก็ตามฉันได้เขียนบริการในแอปจำลองของฉันที่จะดึงข้อมูล http จากแบ็กเอนด์ปลอมที่ฉันเขียนซึ่งให้บริการ JSON import {Injectable} from 'angular2/core'; import {Http, Headers, Response} from 'angular2/http'; import {Observable} from 'rxjs'; @Injectable() export class UserData { constructor(public http: Http) { } getUserStatus(): any { var headers = new Headers(); headers.append('Content-Type', …

10
จะคืนค่าจากฟังก์ชันที่มีการสมัครสมาชิกแบบสังเกตได้อย่างไร?
ฉันไม่รู้วิธีดึงค่าจาก Observable เพื่อส่งคืนโดยฟังก์ชันที่ Observable มีอยู่ ฉันต้องการเพียงมูลค่าจากมันเพื่อส่งคืนไม่มีอะไรอื่น เวอร์ชันปัจจุบันที่ใช้งานได้ function getValueFromObservable() { this.store.subscribe( (data:any) => { console.log(data) } ) } getValueFromObservable() ฉันต้องการให้สิ่งนี้ใช้งานได้ฟังก์ชั่นคืนค่าแล้ว: function getValueFromObservable() { this.store.subscribe( (data:any) => { return data } ) } console.log(getValueFromObservable()) ฉันทำอะไรผิดที่นี่?

10
ทำไมเราต้องใช้ flatMap?
ฉันเริ่มใช้ RxJS และไม่เข้าใจว่าทำไมในตัวอย่างนี้เราต้องใช้ฟังก์ชันเช่นflatMapหรือconcatAll; อาร์เรย์ของอาร์เรย์อยู่ที่ไหน var requestStream = Rx.Observable.just('https://api.github.com/users'); var responseMetastream = requestStream .flatMap(function(requestUrl) { return Rx.Observable.fromPromise(jQuery.getJSON(requestUrl)); }); responseMetastream.subscribe(url => {console.log(url)}) หากมีคนสามารถอธิบายสิ่งที่เกิดขึ้นได้ด้วยสายตาจะเป็นประโยชน์มาก
95 javascript  rxjs 

4
เลิกใช้การสมัครใช้บริการแล้ว: ใช้ผู้สังเกตการณ์แทนการติดต่อกลับข้อผิดพลาด
เมื่อฉันเรียกใช้ linter มันจะบอกว่า: subscribe is deprecated: Use an observer instead of an error callback รหัส (จากแอพ angular 7 พร้อม angular-cli): this.userService.updateUser(data).pipe( tap(() => {bla bla bla}) ).subscribe( this.handleUpdateResponse.bind(this), this.handleError.bind(this) ); ไม่ทราบแน่ชัดว่าควรใช้อย่างไรและอย่างไร ... ขอบคุณ!

3
วิธีโยนข้อผิดพลาดจากตัวดำเนินการแผนที่ RxJS (เชิงมุม)
ฉันต้องการโยนข้อผิดพลาดจากตัวดำเนินการแผนที่ที่สังเกตได้ตามเงื่อนไข ตัวอย่างเช่นหากไม่ได้รับข้อมูล API ที่ถูกต้อง โปรดดูรหัสต่อไปนี้: private userAuthenticate( email: string, password: string ) { return this.httpPost(`${this.baseApiUrl}/auth?format=json&provider=login`, {userName: email, password: password}) .map( res => { if ( res.bearerToken ) { return this.saveJwt(res.bearerToken); } else { // THIS DOESN'T THROW ERROR -------------------- return Observable.throw('Valid token not returned'); } }) .catch( err => Observable.throw(this.logError(err) …

4
การใช้อาร์เรย์จากวัตถุที่สังเกตได้ด้วย ngFor และ Async Pipe Angular 2
ฉันพยายามทำความเข้าใจวิธีใช้ Observables ใน Angular 2 ฉันมีบริการนี้: import {Injectable, EventEmitter, ViewChild} from '@angular/core'; import {Observable} from "rxjs/Observable"; import {Subject} from "rxjs/Subject"; import {BehaviorSubject} from "rxjs/Rx"; import {Availabilities} from './availabilities-interface' @Injectable() export class AppointmentChoiceStore { public _appointmentChoices: BehaviorSubject<Availabilities> = new BehaviorSubject<Availabilities>({"availabilities": [''], "length": 0}) constructor() {} getAppointments() { return this.asObservable(this._appointmentChoices) } asObservable(subject: …

10
จะทำให้ลำดับที่สังเกตได้หนึ่งอันต้องรอให้อีกลำดับหนึ่งเสร็จสมบูรณ์ก่อนที่จะเปล่งออกมา?
สมมติว่าฉันมีObservableดังนี้: var one = someObservable.take(1); one.subscribe(function(){ /* do something */ }); จากนั้นฉันมีวินาทีObservable: var two = someOtherObservable.take(1); ตอนนี้ผมต้องการที่จะsubscribe()ไปtwoแต่ฉันต้องการเพื่อให้แน่ใจว่าoneได้เสร็จสิ้นก่อนที่จะมีtwoสมาชิกเป็นเชื้อเพลิง ฉันสามารถใช้วิธีการบัฟเฟอร์แบบใดtwoเพื่อให้อันที่สองรอให้อันแรกเสร็จสมบูรณ์ ฉันคิดว่าฉันต้องการหยุดชั่วคราวtwoจนกว่าoneจะเสร็จสมบูรณ์

19
ข้อผิดพลาด rxjs / Subject.d.ts: คลาส 'Subject <T>' ขยายคลาสพื้นฐาน 'Observable <T>' อย่างไม่ถูกต้อง
ฉันแยกโค้ดเทมเพลตตัวอย่างจากบทช่วยสอนนี้และดำเนินการด้านล่างสองขั้นตอนเพื่อเริ่มต้น - npm install // worked fine and created node_modules folder with all dependencies npm start // ล้มเหลวโดยมีข้อผิดพลาดด้านล่าง - node_modules/rxjs/Subject.d.ts(16,22): error TS2415: Class 'Subject&lt;T&gt;' incorrectly extends base class 'Observable&lt;T&gt;'. Types of property 'lift' are incompatible. Type '&lt;T, R&gt;(operator: Operator&lt;T, R&gt;) =&gt; Observable&lt;T&gt;' is not assignable to type '&lt;R&gt;(operator: Operator&lt;T, R&gt;) …

4
Promise พฤติกรรมทั้งหมดกับ RxJS Observables?
ใน Angular 1.x บางครั้งฉันต้องhttpส่งคำขอหลายครั้งและทำบางอย่างกับคำตอบทั้งหมด Promise.all(promises).then(function (results) {...})ฉันจะโยนสัญญาทั้งหมดในอาร์เรย์และโทร แนวทางปฏิบัติที่ดีที่สุดของ Angular 2 ดูเหมือนจะชี้ไปที่การใช้ RxJS Observableเพื่อทดแทนสัญญาในhttpคำขอ หากฉันมี Observables ที่แตกต่างกันสองรายการหรือมากกว่าที่สร้างขึ้นจากคำขอ http จะมีคุณสมบัติเทียบเท่ากับPromise.all()?

2
ฉันควรสร้างการสมัครสมาชิกใหม่สำหรับผลข้างเคียงที่เฉพาะเจาะจงเมื่อใด
สัปดาห์ที่แล้วฉันตอบคำถาม RxJS ที่ฉันได้พูดคุยกับสมาชิกชุมชนคนอื่นเกี่ยวกับ: "ฉันควรสร้างการสมัครรับข้อมูลสำหรับผลข้างเคียงที่เฉพาะเจาะจงทุกอย่างหรือฉันควรพยายามลดการสมัครสมาชิกให้น้อยที่สุด?" ฉันต้องการทราบว่าจะใช้ methology ใดในแง่ของวิธีการแอปพลิเคชั่นที่มีปฏิกิริยาเต็มรูปแบบหรือเมื่อใดที่จะเปลี่ยนจากที่หนึ่งไปยังอีกที่หนึ่ง สิ่งนี้จะช่วยฉันและคนอื่น ๆ ในการหลีกเลี่ยงการอภิปรายที่ไม่จำเป็น ข้อมูลการตั้งค่า ตัวอย่างทั้งหมดอยู่ใน TypeScript เพื่อมุ่งเน้นคำถามที่ดีกว่าไม่มีการใช้วงจรชีวิต / ตัวสร้างสำหรับการสมัครสมาชิกและเพื่อให้อยู่ในกรอบที่ไม่เกี่ยวข้อง ลองนึกภาพ: การสมัครสมาชิกถูกเพิ่มใน constructor / lifecycle init ลองนึกภาพ: การยกเลิกการสมัครสมาชิกทำในช่วงเวลาทำลายล้าง ผลข้างเคียงคืออะไร (ตัวอย่างเชิงมุม) อัปเดต / อินพุตใน UI (เช่นvalue$ | async) เอาท์พุท / ต้นน้ำขององค์ประกอบ (เช่น@Output event = event$) การโต้ตอบระหว่างบริการต่าง ๆ ในลำดับชั้นที่แตกต่างกัน ตัวอย่างที่เป็นประโยชน์: สองฟังก์ชั่น: foo: () =&gt; void; bar: …

1
ทำไม setTimeout () ทำให้แอปของฉันล้าสมัย แต่ตัวจับเวลา Rxjs () สมัครสมาชิก (…) ไม่ได้?
ฉันมีองค์ประกอบที่ "ขี้เกียจโหลด" ความคิดเห็นบางอย่างในช่วงเวลา 100ms เมื่อฉันใช้ setTimeout มันล้าหลังจริงๆ ส่วนประกอบ &lt;div *ngFor="let post of posts"&gt; &lt;app-post [post]="post" &gt;&lt;/app-post&gt; &lt;/div&gt; สิ่งนี้ทำให้แอปพลิเคชันของฉันล้าหลัง (avg fps 14, เวลาว่าง 51100ms): while(this.postService.hasPosts()){ setTimeout(()=&gt; { this.posts.push(this.postService.next(10)); },100); } ทำให้แอปพลิเคชันของฉันราบรื่น (เฉลี่ย 35 fps, เวลาว่าง 40800ms) while(this.postService.hasPosts()){ timer(100).subscribe(()=&gt; { this.posts.push(this.postService.next(10)); }); } มีคำอธิบายใด ๆ ทำไมตัวจับเวลา rxjs ถึงใช้งานได้ดีกว่ามาก? ฉันทำการวิเคราะห์ runtime ด้วย firefox …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.