2017-11-03 54 views
15

Tôi đang di chuyển đến [email protected] và sử dụng toán tử có thể đặt ... Tôi cũng cập nhật Observable phương pháp tĩnh. Tôi tự hỏi đối tác của Observable.throwimport 'rxjs/add/observable/throw'; là gì.Quan sát được.thay thế thay thế trong rxjs 5.5.2

Tôi có nên nhập xấu xí _throw không?

import { _throw } from 'rxjs/observable/throw';

Hoặc có cách tốt hơn. Thành thật mà nói tôi thích phương pháp tĩnh trên Observable, và bây giờ có vẻ như tất cả các phương pháp tạo tĩnh như of, from phải được nhập từ rxjs/observable/<methodName>?

+2

Có cùng một câu hỏi. Thật không may, các tài liệu 5.5 chỉ đề cập đến các toán tử (hiện tại "lettable"), chứ không phải các phương thức tĩnh. Điểm bất lợi của việc nhập các phương thức tĩnh là chúng có tên rất ngắn thiếu ngữ cảnh quan sát và trông giống các phần tử cú pháp ("từ" và "của") hoặc thậm chí trùng với từ khóa ("throw" và "if") . Do đó, tôi có xu hướng nhập chúng với tên bí danh ("_throw" là "ObservableThrow", "of" là "ObservableOf", hoặc "empty" là "EmptyObservable"). – Cito

+1

Tất nhiên chúng tôi vẫn có thể sử dụng phương pháp cũ để nhập 'rxjs/add/...', nhưng điều đó có những nhược điểm tương tự như đối với các toán tử. – Cito

Trả lời

17

Tôi vẫn nhận được đầu tròn 5.5 nhưng có vẻ như bây giờ thay vì nhập sử dụng ném ErrorObservable.

// import { _throw } from 'rxjs/observable/throw'; 
import { ErrorObservable } from 'rxjs/observable/ErrorObservable'; 

ErrorObservable.create('error'); 

Từ guide này có vẻ như nó đã được _throw để tránh một cuộc đụng độ từ khóa (phần còn lại của video được tốt để bắt đầu với 5.5)

+0

Bạn có thể làm điều này dễ dàng hơn bằng cách sử dụng _throw ('error') mà thực hiện chính xác những gì bạn làm nhưng ít mã của nó hơn để viết – Mick

4

_throw là đúng (điều này sẽ làm chính xác những gì JayChase đã viết nhưng ít mã hơn). Bạn làm tương tự với of:

import {of} from 'rxjs/observable/of'; 
import {_throw} from 'rxjs/observable/throw'; 

// ... 
    // ... 
    if (result) { 
     return of(result as T); 
    } else { 
     return _throw('error'); 
    } 
} 
Các vấn đề liên quan