问题标签 [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.
typescript - 使用装饰器获取已实现接口的列表
你知道是否可以使用装饰器获取类实现的接口数组:
所以如果我这样做:
在运行时忍者将有一个注释,其中包含["INinja", "IWarrior"]
?
谢谢
javascript - 解决了传播多个调用异步函数的问题
我一直试图让reject
我的异步函数的 s 冒泡回到他们的调用者,但由于某种原因它不起作用。这是一些经过测试的示例代码:
Chrome 每次都会给我这个:Unhandled promise rejection ###rejected
.
知道为什么会这样吗?我希望能够从更高级别处理所有抛出的错误do2()
(如果 try/catch 位于do2()
并 wraps ,则上面的示例可以正常工作await this.do3();
)。谢谢!
编辑:更明确地说,如果我将 try/catch 取出do1()
并将其放入do2()
如下,一切正常:
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
价值?
javascript - 浏览器支持 array.includes 和替代品
我查了一下,发现关于在数组中的较大字符串中查找子字符串。Array.Prototype.includes
Myt
是$.each
迭代更大对象数组的一部分(每个对象都有大量信息,来自字符串、日期等)。searchString
是用户在框中输入的任何内容。所有这些都是我在页面上的列表的简单搜索功能。
这在 Chrome 中运行良好。但是 Firefox 和 IE 出现错误说明
所以我要么贴出一个警告标志,表明我的应用只能在 Chrome 上运行,要么我手工制作了一个查找功能?奇怪的是我发布的 MDN 的文档页面指出只有 Firefox 支持array.includes
,奇怪的是只有 Chrome 运行它。
npm - 谁能解释一下 es7 reflect-metadata 是什么?
已经学习 ES6、JSPM 和 angular2 一个星期了,我发现了这个 repo ES6-loader
如果我们查看底部脚本中的 index.html,您会看到
这是使用 JSPM 的 systemjs polyfill 来获取 ES6 的import
.
问题: 在这种情况下,反射元数据真正做了什么?npm reflect-meta阅读文档越多,我就越不了解它的作用?
javascript - 我可以在不使用 await 的情况下从异步中捕获错误吗?
是否可以捕获来自非等待异步调用的错误,将其发送到原始封装 try/catch,或引发未捕获的异常?
这是我的意思的一个例子:
在这种情况下,抛出的错误fn2
会被无声无息地吞噬,并且绝对不会被原来的try/catch
. 我相信这是预期的行为,因为fn2
很可能会被推到事件循环以在将来的某个时间完成,并且test
不在乎它何时完成(这是有意的)。
有没有什么办法可以确保错误不会被这样的结构意外吞下,除了将try/catch
内部放入fn2
并执行诸如发出错误之类的操作吗?我什至会在不知道如何捕获它的情况下解决一个未捕获的错误,我认为——我不希望抛出的错误是我正在编写的典型程序流程,但是吞下错误会使调试相对烦人。
旁注,我正在使用 Babel 使用 babel-runtime 转换转换代码,并使用 node.js 执行它。
javascript - ES7 async/await 概念问题
我正在迁移现有程序以使用async
/ await
(通过Babel
's bluebirdCoroutines
)来学习这种风格。我一直在看这个教程。
我对以下行为有点困扰。此代码段按预期工作:
改写如下,还是可以的,但是拳头操作不再平行了(需要更长的时间才能完成)!
这是执行dlPart()
我错过了什么?
node.js - Babel 可以为“node --harmony”而不是 ES5 编译吗?
我正在尝试编译一个 Koa 应用程序,并且 Koa 有断言检查以确保我将生成器函数作为中间件传递。但是,我想使用 Babel 从 ES7 编译我的服务器端代码,以与前端代码保持一致。
是否可以针对节点和谐而不是 ES5?我在选项中看不到任何有希望的东西,但是选择目标似乎是能够使用编译器完成的标准事情。
更新
将Babel 的再生器转换列入黑名单似乎没有效果,即使我使用的是stage: 1
.
index.js:
src/server.js:
执行:node --harmony index.js
javascript - 在 IE11 中使用 `window.location.hash.includes` 会引发“对象不支持属性或方法 'includes'”
我正在检查 URL 以查看它是否包含或包含一个?
以控制窗口中的哈希弹出状态。所有其他浏览器都没有问题,只有IE。
当我尝试以这种方式加载时,调试器给了我这个错误:
对象不支持属性或方法“
includes
”
当我通过 popstate 加载页面时,我没有收到任何错误。
node.js - 节点在异步函数完成之前退出
我有一个返回承诺的函数,我试图从异步函数中等待它。问题是程序立即完成,而不是等待承诺。
异步测试.js:
构建并运行:
结果:
立即解决而不是等待一秒钟没有任何效果:
有趣的是,“resolving”永远不会被打印出来,即使它现在是同步的:
我怀疑是编译器问题,但我检查了 Babel 的输出,果然,它编译了同步版本。
我以为我可以等待异步函数中的承诺。我在这里缺少什么吗?