Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs 什么类似于可观察事物的Promise.resolve?_Rxjs_Observable - Fatal编程技术网

Rxjs 什么类似于可观察事物的Promise.resolve?

Rxjs 什么类似于可观察事物的Promise.resolve?,rxjs,observable,Rxjs,Observable,下面是我在YouTube上为Max Schwarzmueller的Angular2教程所选的一些代码的示例: 在本例中,CONTACTS对象是静态JSON。这里不需要承诺,但它用于显示服务在现实世界中的使用情况 我非常理解这一点,但我正试图将这一想法移植到一个服务中,在这个服务中,我使用的是一个可观察的而不是承诺 我想更改CONTACTS数组,然后让Observable发出。然后再次告诉所有的观察者再做一次 在可观察的情况下,这里有什么类似于Promise.resolve?RxJS observ

下面是我在YouTube上为Max Schwarzmueller的Angular2教程所选的一些代码的示例:

在本例中,CONTACTS对象是静态JSON。这里不需要承诺,但它用于显示服务在现实世界中的使用情况

我非常理解这一点,但我正试图将这一想法移植到一个服务中,在这个服务中,我使用的是一个可观察的而不是承诺

我想更改CONTACTS数组,然后让Observable发出。然后再次告诉所有的观察者再做一次

在可观察的情况下,这里有什么类似于Promise.resolve?RxJS observables的文档有很多要浏览的地方

如果这只是一个愚蠢的想法,或者有更好的方法,请告诉我。

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);
    }

}