コールバック関数にパラメータを渡す場合があります。たとえば、同じ機能を指し示す2つのルートがあります。複数のものを指定するルートでは、複数のものを削除することができます。バインドを使用してコールバック関数のパラメータを渡す順序を指定します。
server.app.delete('/api/delete/sku', this.deleteSku);
server.app.delete('/api/delete/skus', this.deleteSku);
deleteSku(req, res, allowMultiple = false) {
//... delete code here ...
}
私がこの
server.app.delete('/api/delete/sku', this.deleteSku);
server.app.delete('/api/delete/skus', _.bind(this.deleteSku, _, _, true));
のようなアンダースコアとlodashで行うことができます知っている。しかし、これは私には醜いと感じ、私はそれは、人々が慣れていない場合は特に、コードの読みやすさに影響を考えますアンダースコアで
また、ネイティブバインドで引数を指定することもできますが、引数は関数の前に置くこともできます。
server.app.delete('/api/delete/sku', this.deleteSku);
server.app.delete('/api/delete/skus', this.deleteSku.bind(null, true));
deleteSku (allowMultiple = false, req, res) { }
今それだけでallowMultiple
最初に処理するためにdeleteSku
を書き換えるために奇妙な感じ、私は特異なルートの場合にバインドをしない場合はそれが壊れます。
もう1つの方法は、deleteSku
とdeleteSkus
の両方のメソッドを本質的に同じことをするが、異なるルートにマップすることです。私はコードが少なくて良い解決法があると思っていました。
よく '.bind()'はそれを行います。あなたはそれをそのまま使用するか、あるいは別の場所にargsを置く何かを使うことができます。あるいは、適切な場所にあるargsを使って実際の関数を呼び出すスタブ関数を宣言することもできます。私はあなたがここに来ることをあなたが期待しているのかどうかは分かりません。あなたは '.bind()'が何をしているか知っているようで、他のオプションがあることを知っているようです。はい、アンダースコア/ロダッシュのものは醜いものであり、多くの人には分かりません。 – jfriend00
個人的には、私はたぶんスタブ関数を使用するだけです: 'server.app.delete( '/ api/delete/skus'、(req、res)=> this.deleteSku(req、res、true));'それは読みやすさのためにそれを打つのは難しいです。 – jfriend00
Expressで非常に注意してください。'(req、res、next)'を渡してハンドラにあなたのデフォルト引数を本当に混乱させることがある場合があります。 – jfriend00