亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

RxJS indexOfQuizId 在控制臺中未定義

RxJS indexOfQuizId 在控制臺中未定義

莫回無 2023-03-10 16:48:23
我已經開始重構我的代碼以與 Angular Observables 一起工作,并且我正在為 quizzes$ 數組使用 Observable 'of',但我堅持讓 indexOfQuizId 工作,特別是與 findIndex。我在控制臺中得到 this.indexOfQuizId 的未定義值,不確定我做錯了什么......請你看看我下面的代碼(在 getIndexOfQuizId() 中)并幫助讓它工作。謝謝你!在測驗中: export const getQuizzes$: Observable<Quiz[]> = of([quiz data inside array]);在 quiz.service.ts 中:export class QuizService {  quizzes$: Observable<Quiz[]>;  ...  constructor(...) {    this.quizzes$ = getQuizzes$;    ...  }  getQuizzes(): Observable<Quiz[]> {    return this.quizzes$;  }  getIndexOfQuizId() {    const index = this.getQuizzes().pipe(map(quizzes => {        this.indexOfQuizId = quizzes.findIndex((elem) => elem.quizId === this.quizId);      })).subscribe(x => {        console.log(x);        console.log('IOQID: ', this.indexOfQuizId);      });  }在 quiz.component.html 中,我使用 this.indexOfQuizId 來訪問 quizzes$ 數組對象,如下所示:this.totalQuestions = this.quizzes$[this.quizService.indexOfQuizId].questions.length;
查看完整描述

1 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

你有一個 undefined 對于這一行console.log('IOQID: ', this.indexOfQuizId);,這是非常正確的。


您可能知道,它subscribe是異步的,這意味著console.log('IOQID: ', this.indexOfQuizId);在您將任何值設置到 this.indexOfQuizId 之前調用下一行 ( ),因為map最終將調用它。


嘗試將 console.log 移動到subscribe這樣的位置:


  getIndexOfQuizId() {

    const index = this.getQuizzes().pipe(map(quizzes => {

      this.indexOfQuizId = quizzes.findIndex(function(elem, i, obs) { return elem => elem.quizId === this.quizId; });

    })).subscribe(x => {

       console.log(x);

       console.log('IOQID: ', this.indexOfQuizId);

    });

   }


查看完整回答
反對 回復 2023-03-10
  • 1 回答
  • 0 關注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號