Описание Promise расходиться с официальной спецификацией
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 32/100
- Issue 类型
- 文档
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- javascript
调研方向
审查 promise-api 和 async-await 中被引用的部分,将其中的术语和陈述与 ECMAScript 规范进行比较。检查对 Promise.resolve 的讨论、thenable 的处理以及与 async/await 的比较。当受影响的说明在技术上准确、与规范一致,并有适当的示例或参考资料支持时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
Если для Вас важно соответствовать официальной спецификации,
то на странице https://learn.javascript.ru/promise-api ошибочно заявлено, что
Promise **API**
В **классе** Promise есть 5 статических методов. Давайте познакомимся с ними.
Согласно стандарту ECMAScript - Promise это Standard Object.
То есть утверждение, о том, что Promise это API
а так же, что это класс - не отвечает заявленному в спецификации.
Далее на этой же странице
https://learn.javascript.ru/promise-api#promise-resolve-reject
Для Promise.resolve не описано поведение для случаев, когда в качестве значения
используется обьект содержащий метод then
Так же содержит ошибочное утверждение, что
Методы Promise.resolve и Promise.reject редко используются в современном коде, так как синтаксис async/await (мы рассмотрим его чуть позже) делает их, в общем-то, не нужными.
Методы resolve и reject используется регулярно там, где активно работают с асинхронными задачами, которые должны (или могут) выполняться без сохранения порядка их выполнения. Например с Promise.all
Синтаксис async/awaite не может быть им заменой, в силу того, что представляет из себя последовательное
выполнения задач.
Кроме этого, использование async заставляет функцию работать схожим с генератором образом, где каждый awaite приводит в сохранению всего текущего контекста, с полсдеющим его восстановлением. Что драматически сказывается
на производительности. То есть код, который использует промисы, но не испольузет async/awaite как потрбеляет меньше ресурсов, так и выполняется быстрее.
Страница https://learn.javascript.ru/async-await
Как и promise.then, await позволяет работать с промис–совместимыми объектами. Идея в том, что если у объекта можно вызвать метод then, этого достаточно, чтобы использовать его с await.
Некорректно, все обьекты которые содержат метод then называть промис совместимыми.
Уже хотя бы потому, что если метод не будет обслуживать Resolve или Reject функции, то подобный промис
никогда не будет разрешен.
Строго говоря, then - обьекты, обслуживающие (res) => res( result) это дань реактивному программированию,
и к промисам это имеет отношение косвенное. То есть промисы, реализуют контарт then для того, чтобы их
можно было использовать при реактивном программирование без дополнительных костылей.
- 主要语言
- HTML
- 星标
- 4.1k
- 派生
- 922
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
javascript-tutorial/ru.javascript.info 的其他 Issue
-
suggestion: tutorial
难度 2/5 1-3 小时 新手友好度 78/100
javascript-tutorial/ru.javascript.info#2187 · 1 条评论 ·
-
bug
难度 2/5 1-3 小时 新手友好度 68/100
javascript-tutorial/ru.javascript.info#2163 · 1 条评论 ·
-
[Баг]: 未关闭bug
难度 1/5 1 小时以内 新手友好度 65/100
-
suggestion: tutorial
难度 2/5 1-3 小时 新手友好度 72/100
-
suggestion: tutorial
难度 3/5 1-2 天 新手友好度 68/100
查看 javascript-tutorial/ru.javascript.info 的全部 Issue
相似的 Issue
-
triage
难度 1/5 1-3 小时 新手友好度 88/100
-
enhancement
难度 2/5 1-3 小时 新手友好度 72/100
-
feature pydanty:is-working
难度 1/5 1 小时以内 新手友好度 88/100
pydantic/pydantic-ai#8647 ·
-
难度 2/5 1-3 小时 新手友好度 68/100
-
:watch: Not Triaged dotnet-fsharp/svc
难度 1/5 1 小时以内 新手友好度 90/100