Articles of ecmascript 2017

我怎样才能在顶层使用asynchronous/等待?

我一直在asynchronous/等待,经过几篇文章,我决定自己testing一下。 然而,我似乎无法绕过我的头为什么这是行不通的: async function main() { var value = await Promise.resolve('Hey there'); console.log('inside: ' + value); return value; } var text = main(); console.log('outside: ' + text) 控制台输出以下内容(节点v8.6.0): >外:[object promise] >里面:嘿,那里 为什么函数内部的日志消息之后执行? 我认为asynchronous/等待创build的原因是为了执行使用asynchronous任务的同步执行。 有没有办法可以使用函数内返回的值,而不使用main()后面的.then() main() ?

asynchronousfunction – 等待不等待承诺

我试图学习asynchronous等待。 在这个代码中 – const myFun = () => { let state = false; setTimeout(() => {state = true}, 2000); return new Promise((resolve, reject) => { setTimeout(() => { if(state) { resolve('State is true'); } else { reject('State is false'); } }, 3000); }); } const getResult = async () => { return await myFun(); } […]

从发生器迁移到asynchronous/等待

我刚刚来到痛苦的认识,发电机function不能用于等待。 只承诺或asynchronousfunction。 我的团队使用由发生器函数组成的所有模块构build了一个完整的应用程序,并从主js文件调用Co模块。 除了通过数百个生成器函数并将它们从function*(…){改为async function(…){ ,还有什么可以使生成器与asynchronous/等待一起工作呢? 没有任何意义,因为yield * / generator和async / await在处理stream程方面非常相似,所以我想知道他们是如何错过了等待支持生成器的。

如何在Heroku上启用ES2017function来运行Node.js应用程序?

我是新来的节点,并创build了一个应用程序,它有一些async / await语法就像这样: const express = require('express'); const app = express(); const someLibrary = require('someLibrary'); function asyncWrap(fn) { return (req, res, next) => { fn(req, res, next).catch(next); }; }; app.post('/getBlock', asyncWrap(async (req,res,next) => { let block = await someLibrary.getBlock(req.body.id); [some more code] })); app.listen(process.env.PORT || 8000); 它在我的机器上工作正常,但是当我部署到Heroku我得到一个错误,因为语法不支持: 2017-03-23T10:11:13.953797+00:00 app[web.1]: app.post('/getBlock', asyncWrap(async (req,res,next) => { 2017-03-23T10:11:13.953799+00:00 […]

尝试/ catchasynchronous/等待块

我正在挖掘节点7asynchronous/等待function,并像这样在代码中徘徊 async function main() { try { var quote = await getQuote(); console.log(quote); } catch(error) { console.error(error); } } 这似乎是唯一的可能性解决/拒绝或返回/抛出asynchronous/等待,但是,V8不优化代码try / catch块? 有替代品吗?