Rxjs 什么类似于可观察事物的Promise.resolve?
下面是我在YouTube上为Max Schwarzmueller的Angular2教程所选的一些代码的示例: 在本例中,CONTACTS对象是静态JSON。这里不需要承诺,但它用于显示服务在现实世界中的使用情况 我非常理解这一点,但我正试图将这一想法移植到一个服务中,在这个服务中,我使用的是一个可观察的而不是承诺 我想更改CONTACTS数组,然后让Observable发出。然后再次告诉所有的观察者再做一次 在可观察的情况下,这里有什么类似于Promise.resolve?RxJS observables的文档有很多要浏览的地方 如果这只是一个愚蠢的想法,或者有更好的方法,请告诉我。Rxjs 什么类似于可观察事物的Promise.resolve?,rxjs,observable,Rxjs,Observable,下面是我在YouTube上为Max Schwarzmueller的Angular2教程所选的一些代码的示例: 在本例中,CONTACTS对象是静态JSON。这里不需要承诺,但它用于显示服务在现实世界中的使用情况 我非常理解这一点,但我正试图将这一想法移植到一个服务中,在这个服务中,我使用的是一个可观察的而不是承诺 我想更改CONTACTS数组,然后让Observable发出。然后再次告诉所有的观察者再做一次 在可观察的情况下,这里有什么类似于Promise.resolve?RxJS observ
getContacts() {
return Observable.of(CONTACTS);
}
在发出触点
后,observable将完成
另请参见以下是与我的原始问题一样有效的功能代码。我用从本地JSON文件中提取的数据替换了CONTACTS中的JSON格式的数组,我处理的是产品而不是CONTACTS
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Product } from './product';
import { Observable } from 'rxjs/Rx';
@Injectable()
export class ProductsService {
private _productsUrl = "./products.json";
private _productObservable: Observable<Product[]>;
private _products: Product[];
constructor(private _http: Http) {
}
getProducts() : Observable<Product[]> {
this._productObservable = this._http.get(this._productsUrl)
.map((response:Response) => {
if (this._products == null)
{
this._products = response.json();
}
return this._products;
})
.catch((error:any) => Observable.throw(error || 'Server error'));
return this._productObservable;
}
deleteProduct()
{
this._products.pop();
return Observable.of(this._products);
}
}
从'@angular/core'导入{Injectable};
从'@angular/Http'导入{Http,Response};
从“./Product”导入{Product};
从'rxjs/Rx'导入{Observable};
@可注射()
导出类产品服务{
private _productsUrl=“./products.json”;
私有产品可观察:可观察;
私人产品:产品[];
构造函数(私有的http:http){
}
getProducts():可观察{
this.\u productObservable=this.\u http.get(this.\u productsUrl)
.map((响应:响应)=>{
如果(此._产品==null)
{
这是._products=response.json();
}
退回此产品;
})
.catch((错误:any)=>可观察的.throw(错误| |“服务器错误”);
返回此项。\u productObservable;
}
deleteProduct()
{
这个。_products.pop();
(本产品)的可观察回报率;
}
}
“联系人对象是静态JSON。”不,不是。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么就不是JSON.Ok。我想我的意思是,它是作为数组从本地js文件中提取的,而不是RESTAPI。有什么更好的说法吗?不管它来自哪里。它只是一个数组。好的,但它是一个JSON格式的数组。这就是重点:不,它不是。这是一个数组。它在被解析之前是JSON格式(文本),但后来被解析,不再是JSON。这是一个数组。我看得出来,因为你已经打电话给它了。字符串(文本)没有push
方法。我得到的“属性”为“不存在于类型“Observable”上”
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Product } from './product';
import { Observable } from 'rxjs/Rx';
@Injectable()
export class ProductsService {
private _productsUrl = "./products.json";
private _productObservable: Observable<Product[]>;
private _products: Product[];
constructor(private _http: Http) {
}
getProducts() : Observable<Product[]> {
this._productObservable = this._http.get(this._productsUrl)
.map((response:Response) => {
if (this._products == null)
{
this._products = response.json();
}
return this._products;
})
.catch((error:any) => Observable.throw(error || 'Server error'));
return this._productObservable;
}
deleteProduct()
{
this._products.pop();
return Observable.of(this._products);
}
}