We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DonKitのHTTPリクエストを伴うメソッドはだいたい success:failure: で終わるようになっている。これは、AFNetworkingのシグネチャを模したものである。 ただ、この形式のコールバックは微妙に扱いにくい気がしている…… リファクタリングを検討したい。
success:failure:
いちおう本命のパターン。
PromiseKitを既に導入しているため、戻り値をAnyPromiseにしてコールバックと繋ぎこめば .then() とか書けるようになる。 既にPromiseで処理したくてその場でラッピングのコードを書いている場所がいくつかあり、悪くないと思う。
.then()
欠点があるとすれば .then で渡ってくる結果の型は id なことか。呼び出しの度に実際に渡る型を調べて書く必要がある。
.then
completionHandler:
コールバックを2つ書くのと、1つ書いて if (error) するのとどっちがマシかみたいな美的感覚の問題が何割かありそうだと思ってのパターン。 (failure: が独立して渡せることで、エラー処理をまとめることができるというのはあるんだが……)
if (error)
failure:
最後のコールバックが1つだとだいぶ呼び出しの見かけがマシになる。現状の failure: 側の処理は雑なのでそんなに書き換えで残念なことになりそうな場所もない。
ちなみにこちらを採用すると、DonKitを独立させた場合にSwift 5.5からは勝手にasync関数として使えるようになるらしいぞ。
The text was updated successfully, but these errors were encountered:
Effective Objective-C 2.0では後者の実装パターンが推されていた。なるほど。
Sorry, something went wrong.
新規に書くコードではPattern 2を採用してみる。Promiseのほうが多分書きやすいけど、idは辛いかな…
No branches or pull requests
DonKitのHTTPリクエストを伴うメソッドはだいたい
success:failure:
で終わるようになっている。これは、AFNetworkingのシグネチャを模したものである。ただ、この形式のコールバックは微妙に扱いにくい気がしている…… リファクタリングを検討したい。
Pattern 1 : PromiseKitを使い、Promiseベースに置き換える
いちおう本命のパターン。
PromiseKitを既に導入しているため、戻り値をAnyPromiseにしてコールバックと繋ぎこめば
.then()
とか書けるようになる。 既にPromiseで処理したくてその場でラッピングのコードを書いている場所がいくつかあり、悪くないと思う。欠点があるとすれば
.then
で渡ってくる結果の型は id なことか。呼び出しの度に実際に渡る型を調べて書く必要がある。Pattern 2 : Apple式の
completionHandler:
に集約するコールバックを2つ書くのと、1つ書いて
if (error)
するのとどっちがマシかみたいな美的感覚の問題が何割かありそうだと思ってのパターン。(
failure:
が独立して渡せることで、エラー処理をまとめることができるというのはあるんだが……)最後のコールバックが1つだとだいぶ呼び出しの見かけがマシになる。現状の
failure:
側の処理は雑なのでそんなに書き換えで残念なことになりそうな場所もない。ちなみにこちらを採用すると、DonKitを独立させた場合にSwift 5.5からは勝手にasync関数として使えるようになるらしいぞ。
The text was updated successfully, but these errors were encountered: