问题标签 [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 投票
2 回答
5081 浏览

typescript - 使用装饰器获取已实现接口的列表

你知道是否可以使用装饰器获取类实现的接口数组:

所以如果我这样做:

在运行时忍者将有一个注释,其中包含["INinja", "IWarrior"]

谢谢

0 投票
1 回答
245 浏览

javascript - 解决了传播多个调用异步函数的问题

我一直试图让reject我的异步函数的 s 冒泡回到他们的调用者,但由于某种原因它不起作用。这是一些经过测试的示例代码:

Chrome 每次都会给我这个:Unhandled promise rejection ###rejected.

知道为什么会这样吗?我希望能够从更高级别处理所有抛出的错误do2()(如果 try/catch 位于do2()并 wraps ,则上面的示例可以正常工作await this.do3();)。谢谢!

编辑:更明确地说,如果我将 try/catch 取出do1()并将其放入do2()如下,一切正常:

0 投票
2 回答
2646 浏览

javascript - 如何避免硬编码?在装饰器中

我已阅读“如何实现打字稿装饰器?” 和多个来源,但有些东西我也无法用装饰器做。

如果我们调用函数foo

该对象FooBar由 in 记录在控制台console.log(this);foo

该字符串"FooBar {foo: function, bar: function} bar test"由 in 记录在控制台console.log(this, "bar", arg);bar

现在让我们使用装饰器:

我们使用相同的功能但经过修饰:

foo我们像以前一样调用:

该对象Window由 in 记录在控制台console.log(this);foo

并且bar永远不会被foo因为this.bar(arg);Causes调用Uncaught TypeError: this.bar is not a function

问题是装饰器this内部的硬编码:log

我怎样才能保留原始this价值?

0 投票
2 回答
28452 浏览

javascript - 浏览器支持 array.includes 和替代品

我查了一下,发现关于在数组中的较大字符串中查找子字符串。Array.Prototype.includes

Myt$.each迭代更大对象数组的一部分(每个对象都有大量信息,来自字符串、日期等)。searchString是用户在框中输入的任何内容。所有这些都是我在页面上的列表的简单搜索功能。

这在 Chrome 中运行良好。但是 Firefox 和 IE 出现错误说明

所以我要么贴出一个警告标志,表明我的应用只能在 Chrome 上运行,要么我手工制作了一个查找功能?奇怪的是我发布的 MDN 的文档页面指出只有 Firefox 支持array.includes,奇怪的是只有 Chrome 运行它。

0 投票
1 回答
13572 浏览

npm - 谁能解释一下 es7 reflect-metadata 是什么?

已经学习 ES6、JSPM 和 angular2 一个星期了,我发现了这个 repo ES6-loader

如果我们查看底部脚本中的 index.html,您会看到

这是使用 JSPM 的 systemjs polyfill 来获取 ES6 的import.

问题: 在这种情况下,反射元数据真正做了什么?npm reflect-meta阅读文档越多,我就越不了解它的作用?

0 投票
2 回答
15062 浏览

javascript - 我可以在不使用 await 的情况下从异步中捕获错误吗?

是否可以捕获来自非等待异步调用的错误,将其发送到原始封装 try/catch,或引发未捕获的异常?

这是我的意思的一个例子:

在这种情况下,抛出的错误fn2会被无声无息地吞噬,并且绝对不会被原来的try/catch. 我相信这是预期的行为,因为fn2很可能会被推到事件循环以在将来的某个时间完成,并且test不在乎它何时完成(这是有意的)。

有没有什么办法可以确保错误不会被这样的结构意外吞下,除了将try/catch内部放入fn2并执行诸如发出错误之类的操作吗?我什至会在不知道如何捕获它的情况下解决一个未捕获的错误,我认为——我不希望抛出的错误是我正在编写的典型程序流程,但是吞下错误会使调试相对烦人。

旁注,我正在使用 Babel 使用 babel-runtime 转换转换代码,并使用 node.js 执行它。

0 投票
3 回答
405 浏览

javascript - ES7 async/await 概念问题

我正在迁移现有程序以使用async/ await(通过Babel's bluebirdCoroutines)来学习这种风格。我一直在看这个教程

我对以下行为有点困扰。此代码段按预期工作:

改写如下,还是可以的,但是拳头操作不再平行了(需要更长的时间才能完成)!

这是执行dlPart()

我错过了什么?

0 投票
2 回答
2289 浏览

node.js - Babel 可以为“node --harmony”而不是 ES5 编译吗?

我正在尝试编译一个 Koa 应用程序,并且 Koa 有断言检查以确保我将生成器函数作为中间件传递。但是,我想使用 Babel 从 ES7 编译我的服务器端代码,以与前端代码保持一致。

是否可以针对节点和谐而不是 ES5?我在选项中看不到任何有希望的东西,但是选择目标似乎是能够使用编译器完成的标准事情。

更新

将Babel 的再生器转换列入黑名单似乎没有效果,即使我使用的是stage: 1.

index.js:

src/server.js:

执行:node --harmony index.js

0 投票
8 回答
142677 浏览

javascript - 在 IE11 中使用 `window.location.hash.includes` 会引发“对象不支持属性或方法 'includes'”

我正在检查 URL 以查看它是否包含或包含一个?以控制窗口中的哈希弹出状态。所有其他浏览器都没有问题,只有IE。

当我尝试以这种方式加载时,调试器给了我这个错误:

对象不支持属性或方法“ includes

当我通过 popstate 加载页面时,我没有收到任何错误。

0 投票
1 回答
3457 浏览

node.js - 节点在异步函数完成之前退出

我有一个返回承诺的函数,我试图从异步函数中等待它。问题是程序立即完成,而不是等待承诺。

异步测试.js:

构建并运行:

结果:

立即解决而不是等待一秒钟没有任何效果:

有趣的是,“resolving”永远不会被打印出来,即使它现在是同步的:

我怀疑是编译器问题,但我检查了 Babel 的输出,果然,它编译了同步版本。

我以为我可以等待异步函数中的承诺。我在这里缺少什么吗?