最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

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

Angular 2 - 直接從Observable返回?cái)?shù)據(jù)

Angular 2 - 直接從Observable返回?cái)?shù)據(jù)

蝴蝶不菲 2019-08-19 17:06:30
Angular 2 - 直接從Observable返回?cái)?shù)據(jù)我一直在試圖解決這個(gè)問題,而且我已經(jīng)能夠閱讀的任何文檔都沒有給我一個(gè)問題的答案。我有一個(gè)直接與API通信并返回可觀察事件的服務(wù),在正常情況下我會(huì)訂閱并按照數(shù)據(jù)執(zhí)行我想要的操作,但是在使用來自restful服務(wù)的請(qǐng)求的輔助服務(wù)中,我需要能夠從請(qǐng)求中返回值。getSomething() {     return this._restService.addRequest('object', 'method').run()         .subscribe(             res => {                 res;             },             err => {                 console.error(err);             }         );}returnSomething() {     return this.getSomething();}在上面的快速示例中,我想知道是否有任何方法可以res從getSomething()內(nèi)部返回returnSomething()。如果以這種方式無(wú)法實(shí)現(xiàn),那么替代方案是什么?我將補(bǔ)充說_restService非常依賴,我真的不想開始搞亂它。
查看完整描述

3 回答

?
天涯盡頭無(wú)女友

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

由于http調(diào)用等是異步的,因此Observable返回一個(gè)而不是同步值。你必須訂閱它,并在那里的回調(diào)中獲得數(shù)據(jù)。沒有辦法解決這個(gè)問題。

一種選擇是將您的邏輯放在subscribe通話中

getSomething() {
    return this._restService.addRequest('object', 'method').run()
        .subscribe(
            res => {
                // do something here
                res;
            },
            err => {
                console.error(err);
            }
        );}

但我喜歡這樣做的方法是添加一個(gè)回調(diào),從外部注入邏輯(可能是一個(gè)組件,也許是另一個(gè)服務(wù)):

getSomething(callback: (data) => void) {
    return this._restService.addRequest('object', 'method').run()
        .subscribe(
            res => {
                callback(res);
            },
            err => {
                console.error(err);
            }
        );}

在您的組件或任何地方:

this._yourService.getSomething((data) => {
    // do something here
    console.log(data);});


查看完整回答
反對(duì) 回復(fù) 2019-08-19
?
GCT1015

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

我自己沒有使用它,但我相信它應(yīng)該在理論上起作用(:

//?service.tsgetSomething()?{
??let?subject:?Subject?=?new?Subject();
??this._restService.addRequest('object',?'method').run()
????.subscribe(subject);
??return?subject;}//?this?can?be?removed?(;returnSomething()?{
??return?this.getSomething();}//?component.tsngOnInit()?{
??this.service.returnSomething()
????.subscribe(res?=>?console.log(res),?err?=>?console.log(err));}

您可以使用不同類型的主題,例如,BehaviorSubject具有value您可以訪問的屬性...

ngOnInit()?{
??//?if?you?use?BehaviorSubject
??this.service.returnSomething().value}
查看完整回答
反對(duì) 回復(fù) 2019-08-19
  • 3 回答
  • 0 關(guān)注
  • 1763 瀏覽

添加回答

舉報(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)