2014-02-14 3 views
13

https://github.com/promises-aplus/cancellation-spec에서 가장 오래된 문제는 (작성 시점) 9 개월입니다. 정말 '표준'약속에 대한 취소 기능에 대한 신뢰할 수있는 정보원을 찾을 수 없습니다.취소 가능한 약속의 상태

이제는 기능이 bluebird에 구현 된 것처럼 보이지만 라이브러리 개발자로서 완전한 패키지 구현을 통해 패키지를 혼란스럽게하고 싶지는 않습니다.

내가 뭘하고 싶은지 단순히 약속을 통과하고 취소 - 사양을 지원합니다.

어디에서이 정보를 찾을 수 있습니까?

답변

17

취소 가능한 약속은 ES6에 없을 것입니다. ES6 약속은 매우 미미하기 때문입니다.

도서관 진화가 하나의 접근법이 분명히 우월하다는 것을 증명하기를 기다리면서 약속/A + 공간에서의 취소 작업이 지연되었습니다. 최신 생각은 this issue이며 취소를 구현하려는 대부분의 도서관은 다소 차이가있는 것으로 보입니다. 키 포인트는 거부의 특별한 경우로서

  • 취소는 취소에
  • 반응 체인 상향 전파뿐만 아니라, 그 자체가 하향 전파 거부.

"간단히 약속을 지키고 취소 규정을 지원하는 것"이 ​​무슨 뜻인지 확실하지 않습니다. 도서관 소비자가 그것을 캐스팅 할 것이라는 가정하에 어떤 제품을 생산하려하지만 나중에 어떤 취소 행위를 상속 받게됩니까? 그건 좀 까다 롭습니다. 특히 취소는 일반적으로 약속을 거부하는 데 사용되는 지정된 Cancellation 생성자에 달려 있습니다. 취소 생태계가 더 발전된 경우이를 수행하는 방법이 더 직관적 일 수 있습니다.

미래는 글쎄, 유동적입니다! 한 경로는 누군가 Q, RSVP, when, Bluebird와 같은 주요 도서관에서 구현 자 인수를 얻는 Promises/A + 공간에서 취소 제안을 진화시키는 데 도움이 될 것입니다. 그러면 많은 소규모 도서관들이 구매할 가능성이 높으며, 아마도 당신은 아마도 당신이 의지 할 수있는 뭔가를 가질 것입니다. 그것이 인기가 있다는 것을 증명한다면 아마도 ECMAScript 약속에 대해서도 고려 될 것입니다!

하지만 많은 사람들이 많은 일을 하느냐에 달려 있습니다. 그것은 기본 Promises/A + 스펙에서 일어나는 일종의 기적 이었지만, 누가 다시 ... 일어날 수 있는지 알고 있습니다!

+1

도메니크 (Domenic), 약속 사양에 대한 작업은 훌륭합니다. 설명해 주셔서 감사합니다. 그리고 네, 그 말은 정확히 말하면,'취소 가능'''''가능''을 만들 수 있다는 것이 굉장 할 것입니다. 어떻게이 사람을 더 현실적으로 만들 수 있습니까? 예를 들어,'Promise.all' 결과의 취소와 비슷한 집계와 같은 거친 모서리가 많이 있습니다. –

+1

@PierPaoloRamon 가까운 미래에 'Cancellable'을 계속 지원하기 위해 Bluebird를 믿을 수는 있지만,이 시점에서 '옵트 인'하고 '옵트 아웃'하지 않습니다. 즉 약속을 취소 할 수 있도록하기 위해 약속에 대한 방법을 호출해야합니다. 따라서 API로서 최악의 경우 라이브러리에 대한 성능 '비용'이 없으므로 결국에는 플러그인이 될 것이므로 계속 사용할 수 있습니다. 즉,이 시점에서 대부분의 다른 라이브러리 나 네이티브 JS에서는 구현되지 않았기 때문에이 동작에 대해 잘 알고 있거나 익숙한 사용자에게 중요한 정면 (라이브러리) 코드를 작성하지 않았다고합니다. –

+1

이것이 동일한 것인지, 아마도 관련성이있는 것인지 확실하지 않지만 [TC39 cancelable promises proposal] (https://www.reddit.com/r/programming/comments/5j6j65/google_kills_proposed_javascript/)에 있습니다. 철수했다. – Stijn