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

javascript - 为什么等待之后的代码没有立即运行?它不应该是非阻塞的吗?

我很难理解 async 和 await 是如何在幕后工作的。我知道我们有承诺,通过使用“then”函数可以使我们的代码成为非阻塞代码,我们可以在承诺解决后放置我们需要做的所有工作。以及我们想要并行执行的工作以保证我们只是在 then 函数之外编写它。因此代码变得非阻塞。但是我不明白如何async await制作非阻塞代码。

见上面的代码。在解决 API 调用之前,我无法继续前进。如果它使我的代码阻塞代码,那么它怎么比承诺更好?还是我错过了async什么await?我将不依赖于等待调用的代码放在哪里?所以它可以继续工作而无需等待执行?

我正在添加一个我想在异步等待示例中复制的 Promise 代码。

0 投票
0 回答
52 浏览

javascript - javascript await 关键字,不返回预期值

我试图模拟一个 http2 请求对象的 but 以测试我对它的使用。我现在在节点版本 7.8.0 上,所以我想我会尝试使用 async 和 await 来做事。

我为 http2(尽管它称为 HTTP)创建了一个模拟类,如下所示:-

重要的部分是this.endPromise; 当我正在测试的代码调用request.end我解决它,然后使用异步函数,requestEndDone我的测试脚本可以等待它的完成,知道然后请求回调已经发生并可以检查结果。

我遇到的问题与主要测试重点稍有不同。这两console.log行给出了不一致的结果。

是控制台上显示的内容。我认为await返回了承诺解决的值,但在这种情况下它没有......为什么?

0 投票
1 回答
654 浏览

javascript - nodejs async/await try/catch jest test 在不应该通过的时候通过

我正在为我的 MongoDB 后端代码使用最新的 ecmascript 语法来学习玩笑测试。我现在正在测试,如果我尝试从空集合中查找文档,测试是否会失败。

光标应该是null结果,因为没有任何返回,这意味着光标是错误的,但是即使我告诉它期待真实并且我不知道为什么,下面的测试仍然通过:

另外,这是一种很好的测试方式吗?我在某处读到你不应该在测试中使用 try/catch 块。但这就是您用来处理异步/等待错误的方法。

0 投票
2 回答
301 浏览

javascript - 如何在保持执行顺序的同时减少异步等待中 await 关键字的使用

看看 foo 如何有多个等待调用,有没有办法在保持执行顺序的同时简化它?

我希望有可能写出类似的东西

或者

0 投票
1 回答
854 浏览

javascript - async/await 函数不等待。多个功能不按顺序运行和完成

我正在尝试编写“现代” js,并通过使用 async/await 来避免回调和承诺。但是,我不能完全理解它是如何工作的。我认为“下一个”功能会等到第一个功能完成后再运行。

在我的应用程序中,这四个函数都是对 MySQL DB 的 ajax 调用,以更新记录并选择其他数据并构建要写入 DOM 的新 html 表。

四个函数按顺序完成,导致界面不正确。刷新整个页面解决了这个问题,但如果函数只是按照我定义的顺序运行和完成,那么界面就是正确的。

0 投票
3 回答
44337 浏览

javascript - async/await 总是返回 promise

我正在尝试异步/等待功能。我有这样的代码模仿一个请求:

当我以这种方式使用代码时

它返回一个承诺

但是当我调用这行代码时

它按预期打印 json

是否可以只使用类似的代码console.log(getJSON())?我不明白什么?

0 投票
1 回答
4221 浏览

javascript - Selenium 在 JS 中使用 async/await,找到并单击元素

我正在尝试使用 Selenium webdriver 和 Mocha 将我的测试重构为具有异步/等待功能的 ES7。我有以下代码:

我不明白为什么这个特别不起作用 - 我得到:

click方法返回webElement之前的函数,可以看到: 返回的元素

布局:

方法:

0 投票
1 回答
1909 浏览

javascript - ES6/7 等待异步功能

我读到了await在承诺没有得到解决的情况下停止执行。我正在尝试在我的 React-native 应用程序中执行以下操作:

但我得到以下而不是实际值(Chrome 不允许我复制时间戳......):

  • Promise {_45: 0, _81: 0, _65: null, _54: null} <- 这是函数后的console.log
  • 100 毫秒后
  • REAL_VALUE <- 这是函数中的 console.log

那么为什么我的代码不等待解决承诺呢?

更新

@thedude 建议:

这个解决方案的问题是我需要在课堂上使用它。但是当我这样做时someVar = await getFromStorage(),我得到一个 500 错误。我可以等它,因为它是 100 毫秒。

例如:

0 投票
0 回答
2281 浏览

ecmascript-2017 - ES6 await 是保留字

我有这样的示例代码:

但是当我转换成 es5 代码时,我得到了这个错误:

我知道await应该对应async,但是start()方法被标记为async,还是报错。如何解决?

0 投票
1 回答
2019 浏览

angular - 如何在 Angular 2 测试中的 fixture.whenStable 上使用 await

虽然whenStable返回了一个承诺,但我不允许使用 await。

下面是我的 tsconfig

我在用着"typescript": "^2.1.5"