Angular 2 Observable 跳过,直到返回的数组长度 > 0

Angular 2 Observable skip until returned arrays length > 0

正如标题所说,我试图在订阅中不断跳过,直到返回的数组长度 > 0。

目前我正在尝试以下操作,但得到一个空 [] 返回

let sub = this.subscribeUserByUsername(post.username).take(1)
     .subscribe(x =>
        {

          console.log('post username: ', post.username); // works
          console.log(x); // shows empty array
            try {
                  if(x[0].uid !== '' && x[0].uid !== undefined && x[0].uid !== null) {
                    // complete
                  }  catch (ex){ 

                  }
                  finally {  sub.unsubscribe(); }
        });

我见过一些其他方法,例如: 。跳过 .skipUntil 等等

但我不确定执行此操作的最佳方法是什么? 我需要在订阅完成后终止订阅,以防止弹出重复数据。

如果我只是离开订阅,我可以看到返回的数组工作 运行 但我想在它 returns 一个长度大于 1 的数组时终止子

谢谢

你可以使用 skipWhile:

let sub = this.subscribeUserByUsername(post.username)
  .skipWhile(v => v.length === 0)
  .take(1)
  .subscribe(<your-handler>)

重要的是 .take(1) 出现在 skipWhile 之后,因此您希望提前退订。