如果我说错了,请纠正我。这就是我要做的
client = Promise.promisifyAll(redis.createClient())
let reply = await client.getAsync('foo_rand000000000000')
console.log('reply',reply.toString())我得到了Unexpected token错误。
我的.babelrc里有这个
{
"presets": [
"es2015",
"stage-3"
]
}有人能指出我做错了什么吗。
发布于 2016-04-26 12:31:01
正如@Bergi指出的那样,您需要将其包装在异步函数中
client = Promise.promisifyAll(redis.createClient())
async function main() {
let reply = await client.getAsync('whatever');
console.log('reply', reply.toString());
}
main();稍微扩展一下,如果您查看此文档http://babeljs.io/docs/plugins/transform-async-to-generator/,您会注意到它们所做的是将函数转换为生成器,并将promise的已解析值生成变量reply。如果不将其封装在可转换为生成器的函数中,您将无法暂停执行,因此无法完成此操作。
另外,应该注意的是,这不是标准的一部分。它可能不会消失,但API可能会改变。所以我不会使用它,除非这是一个玩具项目。您可以使用co或Bluebird.coroutine实现非常类似的功能。它们不是很美观,但API不会改变,一旦异步/等待得到标准化,重构将是微不足道的
编辑:添加更多说明
https://stackoverflow.com/questions/36855239
复制相似问题