Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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
Javascript subscribe()函数会发生什么_Javascript - Fatal编程技术网

Javascript subscribe()函数会发生什么

Javascript subscribe()函数会发生什么,javascript,Javascript,我正在从事一个有角度的项目。我使用ng2智能表作为我项目的表。还有人把它和firebase连接起来了。但我无法通过查看代码来理解它是如何工作的。附加的代码如下。(我为我的项目的患者组件添加了这个ng2智能表) 患者.组件.ts import { Component, OnInit } from '@angular/core'; import { PatientsService } from './patients.service'; import { Patients } from './pat

我正在从事一个有角度的项目。我使用
ng2智能表
作为我项目的表。还有人把它和firebase连接起来了。但我无法通过查看代码来理解它是如何工作的。附加的代码如下。(我为我的项目的
患者
组件添加了这个
ng2智能表

患者.组件.ts

import { Component, OnInit } from '@angular/core';
import { PatientsService } from './patients.service';
import { Patients } from './patients.model';

@Component({
selector: 'ngx-patients',
styles: [],
template: `
    <ng2-smart-table
    (createConfirm)="addData($event)"
    [settings]="settings"
    [source]="list"
    >
    </ng2-smart-table>
`
})
export class PatientsComponent implements OnInit {
list: Patients[] = [];
constructor(private service: PatientsService) {}

ngOnInit() {
    this.service.getPatients().subscribe(actionArray => {
    let a = actionArray.payload.get('data');
    if (a) {
        this.list = a;
    }
    });
}

settings = {
    add: {
    addButtonContent: '<i class="nb-plus"></i>',
    createButtonContent: '<i class="nb-checkmark"></i>',
    cancelButtonContent: '<i class="nb-close"></i>',
    confirmCreate: true
    },
    edit: {
    editButtonContent: '<i class="nb-edit"></i>',
    saveButtonContent: '<i class="nb-checkmark"></i>',
    cancelButtonContent: '<i class="nb-close"></i>'
    },
    delete: {
    deleteButtonContent: '<i class="nb-trash"></i>',
    confirmDelete: true
    },
    columns: {
    id: {
        title: 'ID'
    },
    name: {
        title: 'Full Name'
    },
    username: {
        title: 'User Name'
    },
    email: {
        title: 'Email'
    }
    }
};

addData(event) {
    this.list.push(event.newData);
    console.log(this.list);
    this.service.addPatient({ data: this.list }).subscribe(next => {
    event.confirm.reject();
    });
}
}


**patients.service.ts**
    import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
import { Patients } from './patients.model';
import { from } from 'rxjs';

@Injectable({
providedIn: 'root'
})
export class PatientsService {

    //patients
    patients : Patients;

    constructor(private firestore: AngularFirestore) { }

    /**
    * this is for the get informations about patients
    */

    getPatients(){
        return this.firestore.collection('patients').doc('patientData').snapshotChanges();
    }

    addPatient(object){
        return from(this.firestore.collection('patients').doc('patientData').set(object))
    }
}
 export class Patients {
    id: string;
    name: string;
    username: string;
    email: string;
}
下面的关键词会发生什么

  • 订阅
  • 有效载荷

有人能帮我吗。

Angular基于一个名为RxJs的库,它是JavaScript的反应式扩展。反应式编程是基于可观察的。在开始角度开发之前,这是一个需要学习的概念。可观测数据就像是一组数据,随着时间的推移,这些数据的值会进入其中。订阅可观测对象时,每次可观测对象沿流发出值时,都会运行订阅函数

这是一个概念,不能涵盖在一个单一的StackOverflow答案,但一些好的地方开始


push方法在数组中添加新元素。订阅和负载不是来自普通JavaScript,请提供更多详细信息,例如您正在使用哪些库或框架。