Tua*_*ran 2 node.js async-await bluebird babeljs
如果我在这里错了,请纠正我.这就是我的工作
client = Promise.promisifyAll(redis.createClient())
let reply = await client.getAsync('foo_rand000000000000')
console.log('reply',reply.toString())
Run Code Online (Sandbox Code Playgroud)
我收到了Unexpected token错误.
我有这个 .babelrc
{
"presets": [
"es2015",
"stage-3"
]
}
Run Code Online (Sandbox Code Playgroud)
有人可以指出我在这里做错了什么.
正如@Bergi指出的那样,你需要将它包装在异步函数中
client = Promise.promisifyAll(redis.createClient())
async function main() {
let reply = await client.getAsync('whatever');
console.log('reply', reply.toString());
}
main();
Run Code Online (Sandbox Code Playgroud)
为了扩大一点,如果你看一下这个文档http://babeljs.io/docs/plugins/transform-async-to-generator/你会发现,他们在做什么是功能转换为发电机产生的已解决的变量承诺值reply.如果不将其包装在可以转换为生成器的函数中,您将无法暂停执行,因此无法实现此目的.
此外,应该指出,这不是标准的一部分.它可能不会消失,但API可能会改变.除非这是一个玩具项目,否则我不会使用它.您可以使用co或Bluebird.coroutine完成非常相似的操作.它们不太美观,但API不会改变,一旦异步/等待变得标准化,重构将是微不足道的
编辑:添加进一步说明
| 归档时间: |
|
| 查看次数: |
8697 次 |
| 最近记录: |