问题标签 [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.
javascript - 为什么等待之后的代码没有立即运行?它不应该是非阻塞的吗?
我很难理解 async 和 await 是如何在幕后工作的。我知道我们有承诺,通过使用“then”函数可以使我们的代码成为非阻塞代码,我们可以在承诺解决后放置我们需要做的所有工作。以及我们想要并行执行的工作以保证我们只是在 then 函数之外编写它。因此代码变得非阻塞。但是我不明白如何async
await
制作非阻塞代码。
见上面的代码。在解决 API 调用之前,我无法继续前进。如果它使我的代码阻塞代码,那么它怎么比承诺更好?还是我错过了async
什么await
?我将不依赖于等待调用的代码放在哪里?所以它可以继续工作而无需等待执行?
我正在添加一个我想在异步等待示例中复制的 Promise 代码。
javascript - javascript await 关键字,不返回预期值
我试图模拟一个 http2 请求对象的 but 以测试我对它的使用。我现在在节点版本 7.8.0 上,所以我想我会尝试使用 async 和 await 来做事。
我为 http2(尽管它称为 HTTP)创建了一个模拟类,如下所示:-
重要的部分是this.endPromise
; 当我正在测试的代码调用request.end
我解决它,然后使用异步函数,requestEndDone
我的测试脚本可以等待它的完成,知道然后请求回调已经发生并可以检查结果。
我遇到的问题与主要测试重点稍有不同。这两console.log
行给出了不一致的结果。
是控制台上显示的内容。我认为await
返回了承诺解决的值,但在这种情况下它没有......为什么?
javascript - nodejs async/await try/catch jest test 在不应该通过的时候通过
我正在为我的 MongoDB 后端代码使用最新的 ecmascript 语法来学习玩笑测试。我现在正在测试,如果我尝试从空集合中查找文档,测试是否会失败。
光标应该是null
结果,因为没有任何返回,这意味着光标是错误的,但是即使我告诉它期待真实并且我不知道为什么,下面的测试仍然通过:
另外,这是一种很好的测试方式吗?我在某处读到你不应该在测试中使用 try/catch 块。但这就是您用来处理异步/等待错误的方法。
javascript - 如何在保持执行顺序的同时减少异步等待中 await 关键字的使用
看看 foo 如何有多个等待调用,有没有办法在保持执行顺序的同时简化它?
我希望有可能写出类似的东西
或者
javascript - async/await 函数不等待。多个功能不按顺序运行和完成
我正在尝试编写“现代” js,并通过使用 async/await 来避免回调和承诺。但是,我不能完全理解它是如何工作的。我认为“下一个”功能会等到第一个功能完成后再运行。
在我的应用程序中,这四个函数都是对 MySQL DB 的 ajax 调用,以更新记录并选择其他数据并构建要写入 DOM 的新 html 表。
四个函数按顺序完成,导致界面不正确。刷新整个页面解决了这个问题,但如果函数只是按照我定义的顺序运行和完成,那么界面就是正确的。
javascript - async/await 总是返回 promise
我正在尝试异步/等待功能。我有这样的代码模仿一个请求:
当我以这种方式使用代码时
它返回一个承诺
但是当我调用这行代码时
它按预期打印 json
是否可以只使用类似的代码console.log(getJSON())
?我不明白什么?
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 毫秒。
例如:
ecmascript-2017 - ES6 await 是保留字
我有这样的示例代码:
但是当我转换成 es5 代码时,我得到了这个错误:
我知道await应该对应async,但是start()方法被标记为async,还是报错。如何解决?