Отменяемых обещаний не будет в ES6, поскольку обещания ES6 очень минимальны.
Работа над отменой в пространстве Promises/A+ застопорилась, поскольку мы ждем, пока эволюция библиотеки докажет, что один из подходов явно лучше. Последнее соображение связано с этой проблемой, которую ищет большинство библиотек. реализовать отмену, похоже, следует (более или менее). Ключевые моменты:
- Отмена как частный случай отказов
- Реакции на отмену распространяются вверх по цепочке, как и само неприятие — вниз.
Непонятно, что вы подразумеваете под «просто передать обещание и поддержать спецификацию отмены». Вы пытаетесь создать thenables, предполагая, что потребители вашей библиотеки будут использовать его, но каким-то образом впоследствии унаследовать поведение отмены? Это было бы немного сложно, тем более что отмена обычно зависит от указанного конструктора Cancellation
, используемого для отклонения обещания. Если бы экосистема отмены была более развитой, способ сделать это, вероятно, был бы более простым.
Что касается будущего, то оно в движении! Одним из путей вперед может быть кто-то, кто будет отстаивать эволюцию этого предложения об отмене в пространстве Promises/A+, получая поддержку от крупных библиотек, таких как Q, RSVP, when и Bluebird. Тогда многие небольшие библиотеки, вероятно, купятся, и у вас будет что-то, на что вы, вероятно, сможете положиться. Если он окажется таким популярным, его, вероятно, также рассмотрят для промисов ECMAScript!
Но это зависит от большого количества людей, выполняющих большую работу, так что посмотрим, произойдет ли это :). То, что это случилось с базовой спецификацией Promises/A+, было своего рода чудом, но кто знает... это может случиться снова!
person
Domenic
schedule
14.02.2014