Bookshelf에서 Bluebird Promise를 사용할 때 개발자는 종종 아래와 유사한 패턴을 사용합니다.
var getEvents = function(participantId) { return new models.Participant() .query({where: {id: participantId}}) .fetch({withRelated: ['events'], require: true}) .then(function(model) { return model; }); };
그러나 이 코드는 Promise에 익숙하지 않은 사람들에게 질문을 제기합니다. then 함수가 코드의 전반적인 동작에 의미 있는 영향을 미치나요? 다음 구현이 이를 사용하지 않고도 동일한 결과를 얻을 수 있습니까?
var getEvents = function(participantId) { return new models.Participant() .query({where: {id: participantId}}) .fetch({withRelated: ['events'], require: true}); };
문제의 핵심은 그때 전달된 함수 매개변수에 있습니다. 이 인수는 체인에서 이전 Promise의 반환 값을 받을 것으로 예상됩니다. 따라서 a; then 함수 내의 문은 수신된 인수를 변경 없이 통과할 뿐이므로 기본적으로 아무 작업도 수행하지 않습니다.
외견상 중복에도 불구하고 then 함수는 다음과 같은 역할을 합니다. 특정 사용 사례의 목적. 한 가지 예는 반환된 Promise가 체인 아래에서 다르게 처리되어야 하는 경우입니다. 예를 들어, 기록하거나 JSON으로 변환하거나 사용자 지정 방식으로 처리할 수 있습니다. 또 다른 장점은 then 함수를 사용하면 오류 처리가 가능하다는 것입니다. 그러나 이는 사용된 Promise 라이브러리에 따라 done을 통해서도 달성할 수 있습니다.
일반적으로 다음만 수행하는 것이 좋습니다. 정말로 필요할 때 사용하세요. 불필요한 함수는 코드베이스에 불필요한 복잡성을 추가하고 오류 가능성을 높일 수 있습니다. 일반적으로, 반환된 프로미스의 결과나 오류를 명시적으로 수정하거나 처리해야 하는 경우에만 then을 통합하세요.
위 내용은 '.then(function(a){ return a; })'는 실제로 Promise를 위해 어떤 작업을 수행합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!