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

javascript - ES2017 Async/await 函数——它们是否只适用于 Promise?

我开始async/await在我的 js 应用程序中使用 ES7 函数(由 Babel 编译)。

如果错了,请纠正我,但它们是否仅适用于 Promises?如果是,这意味着我需要将常规回调函数包装到 Promise 中(顺便说一句,我目前正在做的事情)。

0 投票
4 回答
8566 浏览

javascript - ES2017 - 异步与产量

我对当前关于将异步函数和关键字添加await到下一个 EcmaScript 的讨论感到困惑。

我不明白为什么必须在async关键字之前有function关键字。

从我的角度来看,await关键字等待生成器或承诺完成的结果,一个函数return就足够了。

await应该可以简单地在普通函数和生成器函数中使用,而无需额外的async标记。

如果我需要创建一个结果应该可以用于 an 的函数await,我只需使用一个 Promise。

我问的原因是这个很好的解释,以下示例来自:

如果函数的执行将等待完成空洞函数,直到所有等待都完成,它也可以作为普通函数完成。

在我看来,整个函数的执行一直持续到下一个滴答(等待履行)完成。与 Generator-Function 的区别在于 next() 是触发和更改对象的 value 和 done 字段。相反,函数将在完成后简单地返回结果,并且触发器是函数内部触发器,如 while 循环。

0 投票
15 回答
529317 浏览

javascript - async 函数 + await + setTimeout 的组合

我正在尝试使用新的异步功能,我希望解决我的问题将在未来对其他人有所帮助。这是我正在工作的代码:

问题是,我的 while 循环运行得太快,脚本每秒向 google API 发送太多请求。因此,我想构建一个延迟请求的睡眠功能。因此我也可以使用这个函数来延迟其他请求。如果有其他方法可以延迟请求,请告诉我。

无论如何,这是我的新代码不起作用。请求的响应在 setTimeout 内返回给匿名异步函数,但我只是不知道如何将响应返回给睡眠函数 resp。到初始 asyncGenerator 函数。

我已经尝试了一些选项:将响应存储在全局变量中并从睡眠函数中返回,在匿名函数中回调等。

0 投票
1 回答
5637 浏览

ecmascript-6 - await 似乎没有等到异步调用完成

我有一个使用await调用的异步函数,我认为当你使用时await,它应该暂停函数执行,直到它收到它的值。出于某种原因,它对我不起作用。

这是我的函数(它在一个类中):

这是我在同一个类中的另一个函数中调用它的方式:

所以,我得到以下输出:

尽管INSIDE: true我希望首先打印的值。

基本上,我需要的是userExistsuserExistsInDB函数中获取布尔值并在其他代码中使用它。

我在这里做错了什么?

0 投票
6 回答
99228 浏览

javascript - 如何在流中使用 ES8 异步/等待?

https://stackoverflow.com/a/18658613/779159中是一个如何使用内置加密库和流计算文件的 md5 的示例。

但是是否可以将其转换为使用 ES8 async/await 而不是使用上面看到的回调,但仍然保持使用流的效率?

0 投票
1 回答
16322 浏览

javascript - 异步/等待和递归

我正在尝试编写一种方法,该方法以递归方式显示 ActionSheetIOS 以选择从数组中包含的值并返回所选值:

不幸的是,当我调用此方法时,它返回undefined. 我猜这个问题来自异步/等待使用,但我还没有找到它。

有什么建议吗?

0 投票
4 回答
40974 浏览

ecmascript-6 - (ES6) 类 (ES2017) async / await getter

是否有可能让 ES6 类 getter 从 ES2017 等待/异步函数返回一个值。

0 投票
1 回答
4739 浏览

javascript - 异步/等待模拟

我想知道是否可以在测试中使用 async/await 来做这样的事情。

例如,通过常规的承诺,我可以像这样在单元测试中模拟一个承诺。

(如果我覆盖了承诺,我就不必处理冲洗或类似的事情。)但是现在,当 fn() 将更改为此

我在 beforeEach 中所做的覆盖将不再起作用。所以我的问题是......我可以做一些类似于我用异步/等待代码风格覆盖承诺的事情吗?

这里的想法是我想模拟外部依赖项我正在单元测试的函数可能使用什么,比如“someService”。在那个特定的单元测试中,我希望 someService.someFn 能够正常工作,并且我可以模拟它的响应。其他测试检查“someFn”的有效性。

0 投票
5 回答
120290 浏览

javascript - 如何“等待”回调返回?

当使用简单的回调时,如下例所示:

如何更改函数以使用 async / await?具体来说,假设 'someEvent' 保证被调用一次且只调用一次,我希望函数 test 是一个异步函数,它在回调执行之前不会返回,例如:

0 投票
32 回答
1295725 浏览

javascript - 将 async/await 与 forEach 循环一起使用

在循环中使用async/有什么问题吗?我正在尝试遍历文件数组和每个文件的内容。awaitforEachawait

这段代码确实有效,但会不会出现问题?有人告诉我你不应该在这样的高阶函数中使用async/ ,所以我只是想问一下这是否有任何问题。await