Tag: async await

在Babel中使用acyns /等待Node 6

我正在尝试为Node v6.9.2configurationBabel。 我想要使​​用async / await结构。 因为我是Babel和所有Node基础设施的新手,所以我很困惑如何正确configuration它: 我应该使用什么预设? 节点已经实现了大部分的ES6function。 所以我不希望Babel出于性能方面的原因而转储已经被Node 6.9.x支持的function(箭头函数,新的导入机制等等)。 我应该包含哪些插件,以便我可以使用async / await? 在那里我也困惑,因为经过一番研究,我发现了几个插件: syntax-async-functions , transform-async-to-generator等等。 .babelrc将有所帮助。 谢谢

在node.js中使用async / await中的文件系统

我想使用一些文件系统操作asynchronous/等待。 通常async / await可以正常工作,因为我使用了babel-plugin-syntax-async-functions 。 但有了这个代码,我遇到了names未定义的情况: import fs from 'fs'; async function myF() { let names; try { names = await fs.readdir('path/to/dir'); } catch (e) { console.log('e', e); } if (names === undefined) { console.log('undefined'); } else { console.log('First Name', names[0]); } } myF(); 当我重build代码到callback地狱版本一切正常,我得到的文件名。 感谢您的提示。

使用asynchronous函数之外的等待

我试图链接两个asynchronous函数在一起,因为第一个有一个条件返回参数,导致第二个要么运行,要么退出模块。 但是,我发现在规格中找不到奇怪的行为。 async function isInLobby() { //promise.all([chained methods here]) let exit = false; if (someCondition) exit = true; } 这是我的代码的一个混蛋片段(你可以在这里看到完整的范围),这只是检查一个球员,如果已经在大厅,但这是无关紧要的。 接下来我们有这个asynchronous函数。 async function countPlayer() { const keyLength = await scardAsync(game); return keyLength; } 如果exit === true这个函数不需要运行。 我试图做 const inLobby = await isInLobby(); 这个我希望等待结果,所以我可以使用inLobby有条件地运行countPlayer ,但是我收到了没有具体细节的typeerror。 为什么你不能await函数范围之外的async函数呢? 我知道这是一个糖的承诺,所以它必须被链接,但为什么在这个countPlayer我可以等待另一个承诺,但在外面,我不能await isInLobby ?

在节点7.4中使用async / await

我认为节点7.4支持asynchronous/等待,但是这个例子不起作用: const Promise = require('bluebird'); async function main(){ await Promise.delay(1000) } main(); 结果是: async function main(){ ^^^^^^^^ SyntaxError: Unexpected token function 我如何使用asynchronous/等待节点7.4?

asynchronous/等待隐式返回诺言?

我读过由async关键字标记的asynchronous函数隐含地返回一个promise: async function getVal(){ return await doSomethingAync(); } var ret = getVal(); console.log(ret); 但是这不是一致的…假设doSomethingAsync()返回一个promise,并且await关键字将从promise中返回值,而不是promise itsef,那么我的getVal函数应该返回这个值,而不是一个隐含的承诺。 那么究竟是什么情况呢? 由async关键字标记的函数隐含地返回promise,还是我们控制返回的内容? 也许如果我们不明确地回报一些东西,那么他们就会隐含地回报一个承诺。 更清楚的是,上面和之间有区别 function doSomethingAync(charlie) { return new Promise(function (resolve) { setTimeout(function () { resolve(charlie || 'yikes'); }, 100); }) } async function getVal(){ var val = await doSomethingAync(); // val is not a promise console.log(val); // logs 'yikes' […]

尝试/ catchasynchronous/等待块

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