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
之后,因此您希望提前退订。
正如标题所说,我试图在订阅中不断跳过,直到返回的数组长度 > 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
之后,因此您希望提前退订。