当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript Rx.ReplaySubject类代码示例

本文整理汇总了TypeScript中rxjs/Rx.ReplaySubject的典型用法代码示例。如果您正苦于以下问题:TypeScript ReplaySubject类的具体用法?TypeScript ReplaySubject怎么用?TypeScript ReplaySubject使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了ReplaySubject类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: start

    public start(task: () => Promise<any>): Observable<boolean> {
        let working = new ReplaySubject<boolean>();
        working.next(true);
        task().then(() => {
            working.next(false);
        }).catch(() => {
            working.next(false);
        });

        return working.asObservable();
    }
开发者ID:cedar-ave,项目名称:Fabric.Cashmere,代码行数:11,代码来源:work-tracker.service.ts

示例2: startObservable

    public startObservable(task: () => Subscription): Observable<boolean> {
        let working = new ReplaySubject<boolean>();
        let taskSubscription = task();
        working.next(true);

        taskSubscription.add(() => {
            working.next(false);
            taskSubscription.unsubscribe();
        });

        return working.asObservable();
    }
开发者ID:cedar-ave,项目名称:Fabric.Cashmere,代码行数:12,代码来源:work-tracker.service.ts

示例3: observableSineWave

 observableSineWave(increment: number, period: number) : ReplaySubject<string> {
     let subject = new ReplaySubject<string>(1);
     let ws = new WebSocket('ws://' + window.location.hostname + ':' + window.location.port, 'sinedata');
     ws.onmessage = function(e: MessageEvent) {
         return subject.next(e.data)
     };
     return subject;
 }
开发者ID:krimple,项目名称:angular2-websocket-plotter,代码行数:8,代码来源:sinewave-data.service.ts

示例4: readUserData

 readUserData(user: firebase.User): Observable<FirebaseUser> {
   const usersRefPath = 'users/' + user.uid;
   const returner$ = new ReplaySubject<FirebaseUser>();
   
   firebase.database().ref(usersRefPath).on('value', snapshot => {
     returner$.next(snapshot.val());
   });
   return returner$;
 }
开发者ID:ovrmrw,项目名称:jspm-angular2-sample,代码行数:9,代码来源:app.service.ts

示例5: readUserData

  readUserData(): Observable<FirebaseUser> {
    const uid = this.store.currentUser.uid;
    const usersRefPath = 'users/' + uid;
    const returner$ = new ReplaySubject<FirebaseUser>();

    firebase.database().ref(usersRefPath).on('value', snapshot => {
      const user: FirebaseUser = snapshot.val(); // rename
      returner$.next(user);
    });
    this.disposableRefPaths.push(usersRefPath);
    return returner$;
  }
开发者ID:ovrmrw,项目名称:jspm-angular2-sample,代码行数:12,代码来源:profile.service.ts

示例6:

  readNote$(noteid: string): Observable<FirebaseNote> {
    const notesRefPath = 'notes/' + noteid;
    const returner$ = new ReplaySubject<FirebaseNote>();

    /* onメソッドで監視することで変更検知してViewが更新される。 */
    firebase.database().ref(notesRefPath).on('value', snapshot => {
      const note: FirebaseNote = snapshot.val(); // rename
      returner$.next(note);
    });
    this.disposableRefPaths.push(notesRefPath);
    return returner$;
  }
开发者ID:ovrmrw,项目名称:jspm-angular2-sample,代码行数:12,代码来源:note.service.ts

示例7: return

    firebase.database().ref(notesIndexRefPath).orderByChild('timestamp').limitToLast(100).on('value', snapshot => {
      const noteIndices: FirebaseNoteIndex[] = lodash.toArray(snapshot.val()); // rename, reshape

      let cachedNotes = this.store.cachedNotes; // Storeに保存してあるcachedNotesを取得する

      /* 更新の必要があるnoteIndexだけを抽出する(noteidとtimestampが同一のnoteは更新の必要がない) */
      let differenceNoteIndices = noteIndices.filter(noteIndex => {
        const compareNotes = cachedNotes.filter(note => note.noteid === noteIndex.noteid);
        return (compareNotes.length > 0 && compareNotes[0].timestamp === noteIndex.timestamp) ? false : true;
      });
      differenceNoteIndices = lodash.orderBy(differenceNoteIndices, ['timestamp'], ['desc']); // timestampの降順で並び替える
      console.log('differenceNoteIndices: ');
      console.log(differenceNoteIndices);

      /* noteIndexに基づいてnoteを取得する。onceメソッドは非同期のため完了は順不同となる。(本当に?) */
      if (differenceNoteIndices.length > 0) {        
        differenceNoteIndices.forEach(noteIndex => {
          const notesRefPath = 'notes/' + noteIndex.noteid;
          firebase.database().ref(notesRefPath).once('value', snapshot => {
            const note: FirebaseNote = snapshot.val(); // rename
            cachedNotes.unshift(note); // cachedNotesの先頭にnoteを追加
            cachedNotes = lodash.uniqBy(cachedNotes, 'noteid'); // noteidの重複をまとめる。(先頭寄りにあるものを生かす)
            cachedNotes = lodash.orderBy(cachedNotes, ['timestamp'], ['desc']); // timestampの降順で並べ替える
            this.notes$.next(cachedNotes);
            this.store.cachedNotes = cachedNotes; // 新しいcachedNotesをStoreのcachedNotesに書き戻す
          });
        });
      } else { // differenceNoteIndices.length === 0
        this.notes$.next(cachedNotes);
      }
    }, err => {
开发者ID:ovrmrw,项目名称:jspm-angular2-sample,代码行数:31,代码来源:note-list.service.ts

示例8:

 firebase.database().ref(notesRefPath).once('value', snapshot => {
   const note: FirebaseNote = snapshot.val(); // rename
   cachedNotes.unshift(note); // cachedNotesの先頭にnoteを追加
   cachedNotes = lodash.uniqBy(cachedNotes, 'noteid'); // noteidの重複をまとめる。(先頭寄りにあるものを生かす)
   cachedNotes = lodash.orderBy(cachedNotes, ['timestamp'], ['desc']); // timestampの降順で並べ替える
   this.notes$.next(cachedNotes);
   this.store.cachedNotes = cachedNotes; // 新しいcachedNotesをStoreのcachedNotesに書き戻す
 });
开发者ID:ovrmrw,项目名称:jspm-angular2-sample,代码行数:8,代码来源:note-list.service.ts

示例9: next

 next() {
   if (this._data.current < this._data.members.length - 1) {
     this._data.current += 1;
   } else {
     this._data.current = 0;
     this._data.turn += 1;
   }
   this.data$.next(this._data);
 }
开发者ID:Vargash,项目名称:DMVTools,代码行数:9,代码来源:encounter-data.ts

示例10: initNoteListReadStream

  /* 
    notesIndexツリーのindexを取得してからnotesツリーのnote実体を取得する、という多段クエリ。
    Data Transferを節約するため、更新の必要があるnodeIndexだけを抽出する。 
  */
  initNoteListReadStream(): Observable<FirebaseNote[]> {
    // this.experiment();
    const uid = this.store.currentUser.uid; // shorthand
    const notesIndexRefPath = 'notesIndex/' + uid;

    this.notes$.next(this.store.cachedNotes); // とりあえずキャッシュしてあるノートをViewに表示させる

    /* onメソッドはObservableを生成し、offメソッドをコールするまで待機し続ける。 */
    firebase.database().ref(notesIndexRefPath).orderByChild('timestamp').limitToLast(100).on('value', snapshot => {
      const noteIndices: FirebaseNoteIndex[] = lodash.toArray(snapshot.val()); // rename, reshape

      let cachedNotes = this.store.cachedNotes; // Storeに保存してあるcachedNotesを取得する

      /* 更新の必要があるnoteIndexだけを抽出する(noteidとtimestampが同一のnoteは更新の必要がない) */
      let differenceNoteIndices = noteIndices.filter(noteIndex => {
        const compareNotes = cachedNotes.filter(note => note.noteid === noteIndex.noteid);
        return (compareNotes.length > 0 && compareNotes[0].timestamp === noteIndex.timestamp) ? false : true;
      });
      differenceNoteIndices = lodash.orderBy(differenceNoteIndices, ['timestamp'], ['desc']); // timestampの降順で並び替える
      console.log('differenceNoteIndices: ');
      console.log(differenceNoteIndices);

      /* noteIndexに基づいてnoteを取得する。onceメソッドは非同期のため完了は順不同となる。(本当に?) */
      if (differenceNoteIndices.length > 0) {        
        differenceNoteIndices.forEach(noteIndex => {
          const notesRefPath = 'notes/' + noteIndex.noteid;
          firebase.database().ref(notesRefPath).once('value', snapshot => {
            const note: FirebaseNote = snapshot.val(); // rename
            cachedNotes.unshift(note); // cachedNotesの先頭にnoteを追加
            cachedNotes = lodash.uniqBy(cachedNotes, 'noteid'); // noteidの重複をまとめる。(先頭寄りにあるものを生かす)
            cachedNotes = lodash.orderBy(cachedNotes, ['timestamp'], ['desc']); // timestampの降順で並べ替える
            this.notes$.next(cachedNotes);
            this.store.cachedNotes = cachedNotes; // 新しいcachedNotesをStoreのcachedNotesに書き戻す
          });
        });
      } else { // differenceNoteIndices.length === 0
        this.notes$.next(cachedNotes);
      }
    }, err => {
      console.error(err);
    });
    this.disposableRefPaths.push(notesIndexRefPath);
    return this.notes$;
  }
开发者ID:ovrmrw,项目名称:jspm-angular2-sample,代码行数:48,代码来源:note-list.service.ts


注:本文中的rxjs/Rx.ReplaySubject类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。