问题标签 [ecmascript-2016]

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 投票
5 回答
17632 浏览

javascript - ECMAScript 6 或 7 中是否支持静态类型?

ECMAScript 6 中是否支持静态类型?ECMAScript 7 怎么样?

0 投票
1 回答
767 浏览

javascript - 为什么这个 Object.observe 通知示例不起作用

我正在尝试在通知(使用 Thingy)下运行此处发布的示例http://www.html5rocks.com/en/tutorials/es7/observe/Object.observe以使用功能。这是我运行的代码片段:

当我尝试运行它时,我得到TypeError: undefined is not a function. 我不熟悉Object.observe,所以为什么会发生错误以及如何解决它。

注意:这需要Object.observe仅在 Chrome 33+ 中存在。

0 投票
1 回答
1004 浏览

javascript - Object.observe 而不是用 AngularJS 1.x 进行脏检查

如果浏览器支持,有没有办法Object.observe代替 AngularJS 1.x 中的脏检查?这可以显着提高性能。

Object.observe目前至少被谷歌浏览器支持:http: //kangax.github.io/compat-table/es7/

0 投票
2 回答
4097 浏览

javascript - 如何使用 async-await 停止执行下一个函数?

我正在使用这个库在我的 nodejs 应用程序中链接异步函数: https ://github.com/yortus/asyncawait

所以 bar3 等待 bar2 完成,而 bar2 等待 bar() 完成。没关系。但是我该怎么做才能阻止异步块进一步执行?我的意思是这样的:

处理这个问题的最佳方法是什么?

目前我在 bar 内抛出异常并以如下方式处理异常:

它正在工作,但看起来不正确

0 投票
1 回答
16030 浏览

javascript - 茉莉花钟的工作原理是什么?

我不想花几个小时阅读代码来找到相关部分,但我很好奇 jasmine 如何实现它的时钟。它的有趣之处在于它可以使用同步测试代码来测试异步代码。AFAIK,使用当前支持 ES5 的 node.js,这是不可能的(异步函数在 ES7 中定义)。它是否使用 estraverse 之类的东西解析 js 代码并从同步代码构建异步测试?

只是我所说的一个例子:

在这里expect(i).toBe(1);应该在回调中。

0 投票
1 回答
3602 浏览

javascript - 如何使用 mocha/chai/chai-as-promised 测试 ES7 异步函数

我有以下功能要测试:

现在我想用mochachaichai-as-promised来测试这个功能,做这个测试用例:

在上面的代码中查找// FINDME注释以获取我所指的上下文。

所以发生的事情是测试不等待异步password()函数完成。当我发现 ECMAScript7 异步函数立即返回一个 thenable 时,应该没问题,因为 chai-as-promised 正是使用这个特性。我的猜测是,异步函数不会将错误抛出到这个所说的承诺中,而不是将其抛出到封闭函数本身中,而无法通过expect().

对于热心的人:我使用以下命令使用babel即时转换此代码:

babel-node --experimental node_modules/mocha/bin/_mocha --watch --recursive -R spec --check-leaks

Babel 6 更新:

使用 babel-node 6.4.0,以下工作:

然后运行:

0 投票
3 回答
9186 浏览

javascript - 能够中止异步调用

我正在使用 babeljs 和 es7 风格的 async/await 方法。我有一个主脚本,它将在所有返回承诺的对象数组上调用异步方法。我使用 Promise.all() 等待所有这些任务返回,但是,这些任务可能需要很长时间,如果它们超过阈值,我想中止所有这些任务,并且任务以适当的方式处理。

有没有办法完成这样的事情?目前我能想到的唯一方法是生成一个进程来完成调用这些方法的工作并等待它们全部解决,如果达到时间限制,它可以终止进程并执行它需要的任何处理。

更新:关于主脚本正在等待的这些方法的一些说明......他们可能正在执行一系列操作(调用外部系统,在某处流式传输文件等)并且没有执行可以独立取消的单个操作。

更新#2:一些未经测试的半伪代码

0 投票
1 回答
805 浏览

npm - Aurelia 错误:可能未处理的拒绝 [4] 意外令牌 @

所以,最近更新了 Aurelia 的文档,现在很多东西都被装饰器取代了,比如@binding. 当我尝试使用它们时,我得到了错误:

可能未处理的拒绝 [4] 意外令牌@(警告:使用非错误)

我已经运行了所有形式的 npm update 但我仍然得到错误。想法?

0 投票
4 回答
496 浏览

javascript - 僵尸代码中的语法“async/await”是什么?

当我阅读 Zombie.js 的源代码时,我发现了async/await关键字:

https://github.com/assaf/zombie/blob/41807a39c7aa1a13c4ef51575e0d581be96175bc/test/event_source_test.js#L60

为什么它可以使用这样的关键字?代码的行为是什么?我试图从代码库中找到一些线索,但并不幸运

0 投票
3 回答
3263 浏览

javascript - 如何在 Aurelia 中注入父类?

我有一个父类,我想在其中注入一些模块,然后我有一些派生类,我想在其中使用这些注入的模块。但是在派生类中,您必须在super()没有参数的情况下调用,因此父类中的注入模块是未定义的。怎么可能做到这一点?