2

こちらの質問 39 と同様の例に従ってください: http://reactivex.io/learnrx/

search(query: String)メソッド呼び出しを一連の呼び出しに変換しようとしています。私がこれを達成する方法は、メソッドが呼び出されるたびVariableに値で更新する を作成することです。querysearch(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()subscribeNexttakeUntil"A""AB""ABC"

しかし、(Facebook が要求に応答する前に) すばやく入力すると、 query に対して 1 つの結果のみが必要になります"ABC"。を追加したのはそのためtakeUntilです。facebookSearch(query: String)それを使用すると、次の呼び出しが行われたときに呼び出しが無視されると予想queryされますが、現在のクエリではキャンセルされているため、takeUntil何も出力されません。

これは既知の問題ですか、それとも何か間違っていますか?

4

1 に答える 1