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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

互換的青春 2019-12-25 14:44:04
我通過服務(wù)公開了一個HTTP GET請求,并且?guī)讉€組件正在使用此數(shù)據(jù)(用戶的配置文件詳細(xì)信息)。我希望第一個組件請求實際對服務(wù)器執(zhí)行HTTP GET請求并緩存結(jié)果,以便后續(xù)請求將使用緩存的數(shù)據(jù),而不是再次調(diào)用服務(wù)器。這是該服務(wù)的一個示例,您如何建議使用Angular2和Typescript實現(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 回答

?
翻過高山走不出你

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

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


class Service {

  _data;

  get data() {

    return this._data;

  }

  set data(value) {

    this._data = value;

  }

}

就如此容易。plnkr中的其他所有內(nèi)容都將保持不變。我從服務(wù)中刪除了請求,因為它會自動實例化(我們不這樣做new Service...,而且我不知道通過構(gòu)造函數(shù)傳遞參數(shù)的簡單方法)。


所以,現(xiàn)在,我們有了Service,我們現(xiàn)在要做的是在組件中發(fā)出請求并將其分配給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 */

    });

  }

}

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

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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