问题标签 [ecmascript-2017]

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

typescript - 如何拒绝异步/等待语法?

如何拒绝async/await函数返回的承诺?

例如原来:

翻译成async/ await

那么,在这种情况下,我怎么能正确拒绝这个承诺呢?

0 投票
1 回答
79 浏览

javascript - 使用 await 运算符在 Javascript 中同步加载文件

最近,我读到 Javascript 中有一个 await 运算符,用于等待异步函数返回的 Promise 对象。

我的目标是只使用标准 Javascript 提供的函数,而不需要任何外部库。所以我的问题是:如何有效地使用await运算符从服务器顺序获取数据(一个文件接一个文件)?

0 投票
6 回答
55233 浏览

javascript - Array#map() 中的异步/等待

我收到此代码的编译时错误:

错误信息是:

await 是保留字

为什么我不能这样使用它?

我也尝试了另一种方法,但它给了我同样的错误:

0 投票
2 回答
3105 浏览

node.js - 尝试在 mocha 中使用 async/await

我想在 mocha 中使用 async/await 来进行测试。我已经阅读了很多帖子,但我没有找到解决方案。我已经安装了所有的 babel 模块来转译代码,但它不起作用。

这是我在“test”文件夹中的代码:

这是我的 package.json,我在其中使用了我必须安装的所有 babel 依赖项和插件,以及我建议 mocha 使用 babel 转译的测试脚本

我得到的错误如下

我做错了什么?提前非常感谢您的帮助

0 投票
1 回答
679 浏览

javascript - 为什么 ES6 已经有了生成器,ES2017 还要引入 async/await?

在阅读asyncandawait时,我注意到它几乎等同于生成器函数。考虑来自 TypeScript Deep Dive 的这个片段

异步等待

(...)

(...)

生成的 JavaScript

您不必了解这一点,但如果您阅读过生成器,这将相当简单。该函数foo可以简单地包装如下:

其中wrapToReturnPromise只是执行生成器函数以获取generator然后使用generator.next(),如果值为 apromise它会then+catch承诺并取决于结果调用genertor.next(result)genertor.throw(error)。而已!

它最终成为“新功能”的原因是什么?恕我直言,仅使用wrapToReturnPromise某个库中的该函数同样好,同时不会增加 JavaScript 本身的复杂性。

注意:它与这个问题有关,但在这里我问的是“为什么”,而不是“如何”。我试图理解动机。

0 投票
1 回答
3114 浏览

javascript - 循环等待 API 响应

我正在迭代一个数组并为每个项目进行 REST API 调用,但是我遇到了 js 的异步性质的问题。我正在尝试使用异步/等待,但我认为我没有正确设置它,因为它不会等待响应并返回未定义。

0 投票
1 回答
732 浏览

javascript - 是否可以将诸如 Geolocation.watchPosition() 之类的函数包装在 Promise 中?

我想知道是否可以将Geolocation.watchPosition() https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition包装在 Promise 中,并以一种可行的方式将其与async/await成语一起使用;每当设备的位置发生变化并调用后续函数时,都会不断返回位置。

0 投票
1 回答
1592 浏览

node.js - 在生产入口文件中使用 babel-polyfill

我正在使用 babel 转译 ES7 js 代码,一切都像开发/登台的魅力。在应用程序内部,我严重依赖ES7 的async/await特性。我的入口文件如下所示:

我不确定是否有必要为生产环境保留babel-polyfillbabel-core/register模块,因为我在部署之前使用 babel-cli 转译了所有内容。我认为即使我删除它们并使入口文件看起来像这样,它也必须正确工作:

但是,如果这样做,我会在启动应用程序时遇到下一个异常:

在生产环境中引用babel-polyfillbabel-core/register包是否正常?

0 投票
2 回答
366 浏览

node.js - 这种使用异步等待有什么问题?

我正在尝试通过 soundcloud API 下载曲目,然后在下载不确定数量的曲目后启动回调。当我运行下面的代码时,我看到“全部完成”被控制台记录在其他任何事情之前,即使我打算让它成为最后一件事......我做错了什么?

0 投票
5 回答
35885 浏览

javascript - 浏览器中的异步等待真的是非阻塞的吗?

我一直在使用 TypeScript 和本机 Promises 在 SPA 中使用该功能,我注意到即使我将长时间运行的函数重构为返回 promise 的异步函数,UI 仍然没有响应。

所以我的问题是:

  • 新的 async/await 功能究竟如何帮助避免阻塞浏览器中的 UI?在使用 async/await 来实际获得响应式 UI 时,是否需要采取任何特殊的额外步骤?

  • 有人可以创建一个小提琴来演示 async/await 如何帮助使 UI 响应吗?

  • async/await 与 setTimeout 和 XmlHttpRequest 等先前的异步功能有何关系?