- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在阅读Zombie.js的源码时,发现了async/await
关键字:
before(async function() {
await browser.visit('/streaming');
await browser.pressButton('1');
});
为什么它可以使用这样的关键字?代码的行为是什么?我试图从代码库中找到一些线索,但并不幸运
最佳答案
如果我们查看 gulpfile
用于构建该项目,我们可以看到源代码通过 babel
进行管道传输。
gulp.task('build', ['clean'], function() {
return gulp
.src('src/**/*.js')
.pipe(sourcemaps.init())
.pipe(babel({
experimental: true,
loose: 'all',
optional: [
'bluebirdCoroutines',
'runtime'
]
}))
});
Babel是一个转译器,允许您编写 ES6+ 代码并将其转译回 ES5。
Babel will turn your ES6+ code into ES5 friendly code, so you can start using it right now without waiting for browser support.
如果我们查看 Babel 网站上的文档,我们可以在 experimental section 的 ES7 部分看到,有一个 asyncFunctions
的实现。
这些关键字是 ES7 规范的一部分,但尚未稳定下来。因此,它们被包含为 Babel 的实验性功能。
简单来说,async
函数将允许您await
一个返回promise
的调用。
async function() {
// flow will be suspended here until
// the promise returned by someFunction is resolved
await someFunction()
}
ES6 将包含所谓的生成器,它们做类似的事情,但并不特定于 promise 。您可能会开始看到 yield
关键字,或者像这样声明的函数 function* () {}
。它们就是所谓的生成器函数。
有一个特别good article来自 PouchDB,它解释了这些功能的真实用例。
关于javascript - zombiejs代码中的synax `async/await`是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29865179/
我认为这是你需要第二双眼睛来审视的问题之一。 我尝试添加新记录,但不断收到相同的错误,即“SQL 语法错误,我正在使用 MySQL,这是表 MySQL 脚本 create table tbl_empl
我正在将一些基本的 OpenCL 代码移植到 Metal 计算着色器。尝试转换其他辅助函数时很早就陷入困境。例如,在 .metal 文件中包含类似以下函数的内容 Xcode (7.1) 会给我一个“N
我试图断言模拟对象中的属性设置为给定类型。该属性具有抽象类型,并设置为多种具体类型之一。 这就是我想要做的,无论 Foo.DoSomething() 设置 Foo.Bar 的值如何,它总是通过测试:
我是一名优秀的程序员,十分优秀!