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

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

angular 2如何從訂閱返回數(shù)據(jù)

angular 2如何從訂閱返回數(shù)據(jù)

這就是我想做的。@Component({   selector: "data",   template: "<h1>{{ getData() }}</h1>"})export class DataComponent{    this.http.get(path).subscribe({       res => return res;    })}如果getData在中被調(diào)用DataComponent,您可能會建議將其分配給變量like this.data = res并使用i like {{data}}。但是{{getData}}出于個人目的,我需要使用like 。請?zhí)岢鼋ㄗh?
查看完整描述

3 回答

?
江戶川亂折騰

TA貢獻1851條經(jīng)驗 獲得超5個贊

您只是不能直接返回該值,因為它是一個異步調(diào)用。異步調(diào)用意味著在代碼繼續(xù)執(zhí)行的同時,它正在后臺運行(實際上已安排在以后執(zhí)行)。


您也不能直接在類中有這樣的代碼。需要將其移至方法或構(gòu)造函數(shù)中。


您可以做的不是subscribe()直接使用而是使用像map()


export class DataComponent{

    someMethod() {

      return this.http.get(path).map(res => {

        return res.json();

      });

    }

}

另外,您可以將多個對象.map與相同的Observables 結(jié)合使用,因為有時這可以提高代碼的清晰度,并使事情分開。例:


validateResponse = (response) => validate(response);


parseJson = (json) => JSON.parse(json);


fetchUnits() {

    return this.http.get(requestUrl).map(this.validateResponse).map(this.parseJson);

}

這樣,觀察者將返回,呼叫者可以訂閱


export class DataComponent{

    someMethod() {

      return this.http.get(path).map(res => {

        return res.json();

      });

    }


    otherMethod() {

      this.someMethod().subscribe(data => this.data = data);

    }

}

呼叫者也可以在另一個班級。這里只是為了簡潔。


data => this.data = data


res => return res.json()

是箭頭功能。它們類似于正常功能。當(dāng)數(shù)據(jù)從響應(yīng)到達時,這些函數(shù)將傳遞到可觀察對象subscribe(...)或map(...)從可觀察對象調(diào)用。這就是為什么不能直接返回數(shù)據(jù)的原因,因為someMethod()完成后還沒有收到數(shù)據(jù)。


查看完整回答
反對 回復(fù) 2019-09-24
  • 3 回答
  • 0 關(guān)注
  • 986 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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