Может кто-нибудь объяснить синтаксис и значение вызова функции лямбда / жирная стрелка угловой - PullRequest
0 голосов
/ 28 сентября 2019

Может кто-нибудь объяснить это мне и объяснить синтаксис и значение?Я знаю, что put$ имеет смысл возвращать наблюдаемое, поэтому он вызывает метод put в сервисе компании и у него есть два аргумента, и я знаю, что означает подписка, но мне нужна некоторая помощь для понимания этого оттуда.

Если у вас есть ссылка на хороший учебник, который был бы великолепен.

this.companyService.put$(this.currentId, this.appMenu.currentObject)
                   .subscribe(selectedCompany => {this.appMenu.currentObject = selectedCompany});

Это услуга:

Если бы вы также могли объяснить синтаксис 'put«Позвоните, что также будет полезно.

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, BehaviorSubject } from 'rxjs';
import { Company } from '../models/company.model';

@Injectable({
  providedIn: 'root'
})
export class CompanyService {
  private url: string;

  constructor(private http: HttpClient) {
    this.url = "http://localhost:8080/niche/company";
  }

  getOne$ = (companyId: number): Observable<Company> => this.http.get<Company>(`${this.url}/${companyId}`);
  get$ = (): Observable<Company[]> => this.http.get<Company[]>(this.url);
  post$ = (company: Company): Observable<Company> => this.http.post<Company>(this.url, { company });
  patch$ = (companyId: number, company: Company): Observable<Company> => this.http.patch<Company>(`${this.url}/${companyId}`, { company });
  put$ = (companyId: number, company: Company): Observable<Company> => this.http.put<Company>(`${this.url}/${companyId}`, company );
  delete$ = (companyId: number): Observable<Company> => this.http.delete<Company>(`${this.url}/${companyId}`);
}

1 Ответ

0 голосов
/ 28 сентября 2019

Следующая строка означает:

this.companyService
    .put$(this.currentId, this.appMenu.currentObject)
    .subscribe(selectedCompany => {
        this.appMenu.currentObject = selectedCompany
    });

Если вам нравится метафора:

В банке есть стихотворение (database), и у вас есть копия стихотворенияв вашей тетради (client application, in your case Angular application).

Однако вы хотите отредактировать несколько строк стихотворения в своей тетради и стихотворение в банке.

Затем вы звоните сотруднику банковского счета (this.companyService), чтобы поставить ваши строки (.put) в существующее стихотворение (this.currentId, this.appMenu.currentObject), а затем вы ждете сотрудника банковского счета (.subscribe), пока она / он не обновит стихотворение в банке.

ОБНОВЛЕНИЕ:

Как говорит Angular doc:

HttpClient в @ angular / common / http предлагает упрощенный клиентский HTTP-API для приложений Angular, который опирается на интерфейс XMLHttpRequest, предоставляемый браузерами.Дополнительные преимущества HttpClient включают функции тестируемости, типизированные объекты запросов и ответов, перехват запросов и ответов, наблюдаемые API-интерфейсы и упрощенную обработку ошибок.

Как говорит MDN:

XMLHttpRequest или XHR - это API-интерфейс JavaScript, используемый для связи между клиентом и сервером.Используйте объекты XMLHttpRequest (XHR) для взаимодействия с серверами.Вы можете извлечь данные из URL без необходимости полного обновления страницы.Это позволяет веб-странице обновлять только часть страницы, не нарушая того, что делает пользователь.XMLHttpRequest широко используется в программировании AJAX.

Вопреки своему названию, XHR может использоваться для получения JSON, HTML и простого текста, а также XML.

И пример использования:

// 1. Here we are creating a new XMLHttpRequest object
let xhr = new XMLHttpRequest();

// 2. Then we set its configuration: request of GET type for the URL /somePage/anotherPage
xhr.open('GET', '/somePage/anotherPage');

// 3. We are sending the request over the network
xhr.send();

// 4. Then this rows will be called after the response is received from the 
// server to the client
xhr.onload = function () {
    if (xhr.status != 200) { // see what HTTP status of the response is come
        alert(`Error ${xhr.status}: ${xhr.statusText}`); // e.g. 404: Not Found
    } else { // show the result
        alert(`Great, got ${xhr.response.length} bytes`); // responseText is the server
    }
};

// Get progress from XMLHttpRequest
xhr.onprogress = function (event) {
    if (event.lengthComputable) {
        alert(`We are received ${event.loaded} of ${event.total} bytes`);
    } else {
        alert(`We are received ${event.loaded} bytes`); // no Content-Length
    }

};

xhr.onerror = function () {
    alert("Request failed");
};

То есть subscribe метод HTTPClient равен onload метод XMLHttpRequest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...