下面是我的可观察代码:
var suggestions =
Rx.Observable.fromEvent(textInput, 'keyup')
.pluck('target','value')
.filter( (text) => {
text = text.trim();
if (!text.length) // empty input field
{
this.username_validation_display("empty");
}
else if (!/^\w{1,20}$/.test(text))
{
this.username_validation_display("invalid");
return false;
}
return text.length > 0;
})
.debounceTime(300)
.distinctUntilChanged()
.switchMap(term => {
return $.ajax({
type: "post",
url: "src/php/search.php",
data: {
username: term,
type: "username"
}
}).promise();
}
);
suggestions.subscribe(
(r) =>
{
let j = JSON.parse(r);
if (j.length)
{
this.username_validation_display("taken");
}
else
{
this.username_validation_display("valid");
}
},
function (e)
{
console.log(e);
}
);
我遇到的问题是,当输入为空时,我有另一段代码,它基本上返回一个“error: empty input”,但它被返回的observable所覆盖。所以我想知道,如果text.length
为0,是否有一种方法可以忽略所有可观察到的内容,但当文本长度不为0时,也可以重新订阅。
我想过unsubscribe
,但不知道该把它放在哪里去尝试。
https://stackoverflow.com/questions/45809900
复制相似问题