특정 경우 콜백 함수에 매개 변수를 전달하려고합니다. 예를 들어 동일한 기능을 가리키고 싶은 두 개의 경로가 있습니다. 복수형을 지정하는 경로의 경우 여러 항목을 삭제할 수 있습니다.바인드를 사용하여 전달 된 콜백 함수 매개 변수의 순서 지정
server.app.delete('/api/delete/sku', this.deleteSku);
server.app.delete('/api/delete/skus', this.deleteSku);
deleteSku(req, res, allowMultiple = false) {
//... delete code here ...
}
I는이
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
를 다시 작성하는 이상한 느낌이 나는 단수 경로 케이스에 결합하지 않는 경우가 나옵니다.
다른 옵션은 본질적으로 동일한 작업을하지만 다른 경로로 매핑하는 deleteSku
및 deleteSkus
메서드를 모두 사용하는 것입니다. 코드가 적어 질 수있는 더 나은 솔루션이있을 수 있기를 바랍니다.
글쎄'.bind()'가하는 일을합니다. 당신은 그것을 사용하는 방식으로 쓰거나 다른 곳에서 args를 넣는 다른 것을 사용할 수 있습니다. 아니면 args를 사용하여 실제 함수를 호출하는 스텁 함수를 선언 할 수 있습니다. 네가 여기에 오기를 기대하고 있는지 잘 모르겠다. '.bind()'가하는 일을 알고있는 것처럼 보이고 다른 옵션이 있다는 것을 아는 것 같습니다. 그렇습니다, 밑줄/로다시 물건은 추악하고 많은 사람들에게는 익숙하지 않습니다. – jfriend00
필자는 개인적으로 stub 함수를 사용하고 싶습니다 :'server.app.delete ('/ api/delete/skus', (req, res) => this.deleteSku (req, res, true));'It 's 가독성을 위해 이길 수는 없습니다. – jfriend00
급행으로 아주 조심하십시오.때로는 ((req, res, next))를 넘겨주는 ('req, res)'이상을 통과 할 수 있습니다. – jfriend00