草庐IT

co_await

全部标签

javascript - 从嵌套的 async/await 函数中捕获错误

我在node4.3脚本中有一个函数链,类似于回调->promise->async/await->async/await->async/await像这样:consttopLevel=(resolve,reject)=>{constfoo=doThing(data).then(results=>{resolve(results)}).catch(err=>{reject(err)})}asyncfunctiondoThing(data){constthing=awaitdoAnotherThing(data)returnthing}asyncfunctiondoAnotherThing(d

node.js - 使用 async/await 在 AWS lambda 上未处理的 promise 拒绝

最近,AWS宣布为其lambda函数(Node.js8.10runtimeavailable)提供nodejs8.10运行时。虽然这对于快乐的流程来说似乎很棒,但我在不快乐的流程中遇到了一些问题,即我收到了“UnhandledPromiseRejectionWarnings”。我正在使用以下代码。这个想法是我提供了一个不存在的对象的key来测试该场景的不愉快流程。我的目标是让错误被记录并从lambda中传播出去,因为我在这里没有理智的方法来处理它(我无法在这个lambda函数中检索新键)。我还希望能够在调用者中使用错误(例如,另一个lambda函数或步进函数)。'usestrict';

javascript - 我们应该在 JavaScript 中选择 async await 而不是 Promise

我知道asyncawait是镇上新的Promise并且是编写异步代码的新方法,我也知道我们不必编写.then,创建一个匿名函数来处理响应Async/await最终可以使用相同的构造处理同步和异步错误,好旧的try/catchpromise链返回的错误堆栈不提供错误发生位置的任何线索。但是,来自async/await的错误堆栈指向包含错误的函数等等……但是这里我做了一个简单的基准测试https://repl.it/repls/FormalAbandonedChimpanzee在基准测试中,我已经运行了2个循环100万次。在第一个循环中,我正在调用一个返回1的函数在另一个函数中,我正在调用

node.js - 通天塔 : "The keyword ' await' is reserved (53:24)"

我们在Meteor项目中使用async/await。这种语法在我们的resolvers.js中无处不在。在我们升级到Node6.7之前,一切都运行良好。现在每次我们尝试构建它时它都会显示这个错误:“保留关键字‘await’(53:24)”有人知道怎么解决吗?这是我的.babelrc文件的内容:{"presets":["es2015","stage-2","react"],"plugins":["react-require","babel-root-slash-import"]} 最佳答案 以防万一其他人搜索相同的问题,在我的情况下,

javascript - 通过 yield & co 获得 promise 的值(value)

我正在尝试弄清楚如何通过yield获取promise的值(value),可能使用“co”:function*(){varsomeVar=yieldfunctionThatReturnsAPromise();}被调用的函数不是生成器,只是一个普通函数。有了上面的someVar==Promise,但我想要解析的值。是否co或者其他一些图书馆有办法做到这一点? 最佳答案 通常情况下,yield行为向其自己的暂停执行(yield函数的左侧)返回与生成器的调用函数相同的值。在这个从1到5的简单示例中,yield的输入是生成器函数以及生成器执行

javascript - Node 版本 8 中 Async/Await 的性能指南

async/await在node版本8中可用。代码在nodejs中首次在native中是线性的。那很好。之前的许多文章声称,在v8javascript引擎中,带有try/catchblock的函数没有被优化。现在,async/await需要try/catchblock来处理错误。那么,作为开发人员需要做些什么来保持相同的性能? 最佳答案 try/catch在提交9aac80f中收到TurboFan优化适用于V85.3(Nodev7.x及更高版本)。这意味着try/catch性能不佳的历史说法不再成立。来自V8blogpost:Int

javascript - 优雅地处理 `await` ed Javascript Promise 上的拒绝

ES2017async/await的一个很好的模式是:asyncfunction(){try{varresult=awaitsome_promised_value()}catch(err){console.log(`Thisblockwouldbeprocessedinareject()callbackwithpromisepatternsbutthisisfarmoreintuitive`)returnfalse//orsomethinglessobtuse}result=do_something_to_result(result)returnresult;}能够处理这样的错误真是太

javascript - 在 promise 链中使用 await

我刚刚升级到Node8,想开始使用async/await。我遇到了一个错误,我花了一段时间才解决,实际上我只是想知道是否有更优雅的方式。我不想在此时重构整个函数,因为它会导致所有二次重构。asyncdoSomething(stuff){...returnfunctionThatReturnsPromise().then((a)=>...).then((b)=>...).then((c)=>{constuser=awaitsomeService.createUser(stuff,c);user.finishSetup();});};有没有办法能够在promise链中使用await而不必将

node.js - 需要一个正确的 eslintrc 用于 async/await - 使用 7.6+ nodejs

使用最新版本的nodejs7.6+我开始使用async/await。我使用的是jshint,但从我读到的内容来看,他们目前确实支持这种语法,并且有些人建议使用eslint。好吧,我设置了eslint,但是啊……它也标记了异步函数。解析错误:意外的token初始化(致命)我知道没有任何问题,因为我的代码运行良好,它只是linter。如果我注释掉一个异步函数,它只会标记下一个函数。事实上eslint只标记第一个发现有这个错误的异步,而不是所有的(那是怎么回事?)这是使用初始化向导创建的eslintrc文件。我希望只为env请求node和es6就足够了......显然不是。module.ex

javascript - 使用 await 时出现意外的标识符

我目前正在尝试将async/await用于需要循环同步的函数。这是函数:asyncchannelList(resolve,reject){letquery=['channellist'].join('');this.query.exec(query).then(response=>{letchannelsRaw=response[0].split('|');letchannels=[];channelsRaw.forEach(data=>{letdataParsed=ResponseParser.parseLine(data);letmethod=newChannelInfoMetho