こちらの質問 39 と同様の例に従ってください: http://reactivex.io/learnrx/
search(query: String)
メソッド呼び出しを一連の呼び出しに変換しようとしています。私がこれを達成する方法は、メソッドが呼び出されるたびVariable
に値で更新する を作成することです。query
search(query: String)
それから私は私の中にこれを持っていますinit()
:
_ = queryVariable.asObservable().flatMap({ query -> Observable<[JSON]> in
return self.facebookSearch(query).takeUntil(self.queryVariable.asObservable())
}).subscribeNext({ result in
if let name = result[0]["name"].string {
print(name)
} else {
print("problem")
}
})
と入力する"ABC"
と、メソッドが, , でsearch(query: String)
3 回呼び出されます。それはwithにマッピングされます。次に、それを Facebook 検索 (Facebook で名前で人を検索する) にマッピングしています。そして、私は名前を印刷します。を使用しない場合、期待どおりに動作し、クエリ ( 、、 )ごとに 1 つずつ、3 セットの結果が得られます。"A"
"AB"
"ABC"
seq(["A", "AB", "ABC"])
queryVariable.asObservable()
subscribeNext
takeUntil
"A"
"AB"
"ABC"
しかし、(Facebook が要求に応答する前に) すばやく入力すると、 query に対して 1 つの結果のみが必要になります"ABC"
。を追加したのはそのためtakeUntil
です。facebookSearch(query: String)
それを使用すると、次の呼び出しが行われたときに呼び出しが無視されると予想query
されますが、現在のクエリではキャンセルされているため、takeUntil
何も出力されません。
これは既知の問題ですか、それとも何か間違っていますか?