问题标签 [ecmascript-next]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5216 浏览

javascript - JavaScript async/await for Array.map() 中的 Promise

给定以下代码

JavaScript 将返回一个已解析的 Promises 数组,而不是实际的 Promises 结果。

这可能是由于Array.map()没有作为 Promise 实现。

是否有基于 Promise 的版本Array.map

这个问题不同于如何从异步调用返回响应,因为它是关于如何返回包装在里面的批处理响应Array.map

0 投票
2 回答
197 浏览

javascript - 从 JavaScript 中的类的实例动态继承

我有点在 JavaScript 中与继承作斗争。假设我有以下课程:

我想创建一个装饰器,让我可以执行以下操作:

有没有办法创建这样的装饰器?我尝试了多种解决方案,但没有一个真正满足所有测试。

lodash 是允许的。

0 投票
2 回答
2973 浏览

javascript - 如何使 ES6 类最终(不可子类化)

假设我们有:

如何修改它以使

或者

生成异常?也许最明显的解决方案是在 FinalClass 的构造函数中执行以下操作:

有没有人有更清洁的解决方案,而不是在每个应该是最终的类中重复这些行(可能使用装饰器)?

0 投票
2 回答
10467 浏览

node.js - 在异步/等待中包装承诺

我在 async/await 和从 Promise 中返回一个值时有点挣扎。

据我了解,我应该能够通过以下方式获得价值:

但显然我在这里遗漏了一点,因为这会带来一个承诺。它不应该打印“你好”吗?在类似的注释中,我不清楚在将回调包装到异步/等待之前是否需要将其转换为承诺?

0 投票
0 回答
1920 浏览

mongoose - Koa2 + Mongoose + 异步/等待

在 Koa2 中尝试一个基本的东西,从 MongoDB 获取结果并发送它作为响应。以下是我使用 koa-router 的代码。

如果我尝试在 ctx.body 中发送记录,结果总是“未找到”响应。帮助!!

供参考我的模型 users.js

0 投票
1 回答
299 浏览

javascript - 当关键字后面的表达式没有计算为 promise 时,`await` 会发生什么?

我有一个这样的 ES7 代码。

线上应该发生什么var threeP = await three

代码应该按预期继续,还是失败,因为three不是承诺?

这个 repo中,它被称为“有争议的语法和语义”。我无法通读官方文档以找到确切的定义,因为它太技术性了。

默认 babel.js 转换按预期记录 5;但是,nodent- 一个不同的变换 - 打印TypeError: three.then is not a function。哪个是正确的,为什么?

0 投票
1 回答
1102 浏览

javascript - async/await 在函数式编程 JavaScript 中没有地位吗

我正在用 JavaScript 学习 monad。Promise 本身就是 monad,并且是在功能上处理异步副作用的正确方法。es7 新播放器 async/await 怎么样,我们可以在 JavaScript 的函数式编程中使用它吗?我觉得它定义明确的承诺单子回到了命令的方式。或者有一种方法可以明智地使用 async/await 以使函数编程更加容易?

0 投票
1 回答
434 浏览

javascript - es7 object spread notation 如何创建浅拷贝来替换原始对象?

我正在尝试从这里学习 Redux 和 es7 ,但无法理解作者关于以下代码的以下观点:

另请注意,此 ES7 对象扩展表示法适合我们的示例,因为它在我们的状态上做 { message: action.value } 的浅拷贝(这意味着状态
的第一级属性被第一级属性完全覆盖 - 而不是优雅地合并 - {消息:action.value})。

当作者使用 Object Spread 表示法简单地将message:action.value 键/值对添加到原始状态时,状态的第一级属性是如何被 {message:action.value} 覆盖的?由于 Object Spread 表示法,状态的第一级属性仍然存在,对吧?因此,如果原始状态是{a:"foo", b:"bar"}调度动作后的新状态,对SAY_SOMETHING{a:"foo", b:"bar", message: 'SAY_SOMETHING}?什么都没有被替换。

0 投票
1 回答
188 浏览

javascript - 理解 ECMAScript 中的 async/await 提案

正如async所说,pormise对象或简单数据(例如数字或字符串)可以跟随await,当它是简单数据时,它就像同步一样,我编写以下第一个程序:

结果是:

看来readF函数是异步的?为什么?

我编写了第二个程序,只需将 await 更改为第二个文件阅读器:

这一次,结果是:

我无法理解这个奇怪的惊人结果,希望你能帮助我。

0 投票
4 回答
85107 浏览

javascript - Object.assign(...array) 的替代方案

假设我们有对象数组。

调用在具有索引的对象覆盖Object.assign(...array)具有索引的对象中的现有属性的那些对象之间进行继承ii-1

例如:

现在,使用 Babel 和建议的对象扩展语法,我们可以静态地做到这一点:

如何动态地做到这一点?

“扩展语法”的上下文有重叠。我的意思是如何对两者使用传播语法:

  • 让 Array 散布元素。
  • 为输出文字对象{}进行继承

?

我试过{...array}了,它返回{0:<array[0]>,1:<array[1]>,2:<array[2]>}的输出Object.assign(...array).