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

时间:2016-12-12 15:04:50

标签: angular observable angularfire2

正如标题所说,我试图继续跳过订阅,直到返回的数组长度为> 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 等

但我不确定这样做的最佳方法是什么? 我需要在完成后终止订阅以防止重复数据弹出。

如果我只是让订阅继续运行,我可以看到返回的数组有效,但我想在返回一个长度大于1的数组时杀死它。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用skipWhile

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

.take(1)位于skipWhile之后非常重要,因此您需要提前取消订阅。