第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用angular2 http服務(wù)緩存結(jié)果

使用angular2 http服務(wù)緩存結(jié)果

互換的青春 2019-12-25 14:44:04
我通過(guò)服務(wù)公開(kāi)了一個(gè)HTTP GET請(qǐng)求,并且?guī)讉€(gè)組件正在使用此數(shù)據(jù)(用戶的配置文件詳細(xì)信息)。我希望第一個(gè)組件請(qǐng)求實(shí)際對(duì)服務(wù)器執(zhí)行HTTP GET請(qǐng)求并緩存結(jié)果,以便后續(xù)請(qǐng)求將使用緩存的數(shù)據(jù),而不是再次調(diào)用服務(wù)器。這是該服務(wù)的一個(gè)示例,您如何建議使用Angular2和Typescript實(shí)現(xiàn)此緩存層。import {Inject, Injectable} from 'angular2/core';import {Http, Headers} from "angular2/http";import {JsonHeaders} from "./BaseHeaders";import {ProfileDetails} from "../models/profileDetails";@Injectable()export class ProfileService{    myProfileDetails: ProfileDetails = null;    constructor(private http:Http) {    }    getUserProfile(userId:number) {        return this.http.get('/users/' + userId + '/profile/', {                headers: headers            })            .map(response =>  {                if(response.status==400) {                    return "FAILURE";                } else if(response.status == 200) {                    this.myProfileDetails = new ProfileDetails(response.json());                    return this.myProfileDetails;                }            });    }}
查看完整描述

3 回答

?
翻過(guò)高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊

關(guān)于您的最后一條評(píng)論,這是我想到的最簡(jiǎn)單的方法:創(chuàng)建一個(gè)具有一個(gè)屬性并且該屬性將保存請(qǐng)求的服務(wù)。


class Service {

  _data;

  get data() {

    return this._data;

  }

  set data(value) {

    this._data = value;

  }

}

就如此容易。plnkr中的其他所有內(nèi)容都將保持不變。我從服務(wù)中刪除了請(qǐng)求,因?yàn)樗鼤?huì)自動(dòng)實(shí)例化(我們不這樣做new Service...,而且我不知道通過(guò)構(gòu)造函數(shù)傳遞參數(shù)的簡(jiǎn)單方法)。


所以,現(xiàn)在,我們有了Service,我們現(xiàn)在要做的是在組件中發(fā)出請(qǐng)求并將其分配給Service變量 data


class App {

  constructor(http: Http, svc: Service) {


    // Some dynamic id

    let someDynamicId = 2;


    // Use the dynamic id in the request

    svc.data = http.get('http://someUrl/someId/'+someDynamicId).share();


    // Subscribe to the result

    svc.data.subscribe((result) => {

      /* Do something with the result */

    });

  }

}

請(qǐng)記住,我們的Service實(shí)例對(duì)于每個(gè)組件都是相同的,因此,當(dāng)我們?yōu)槠浞峙渲禃r(shí)data,它將反映在每個(gè)組件中。

查看完整回答
反對(duì) 回復(fù) 2019-12-25
  • 3 回答
  • 0 關(guān)注
  • 1272 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)