草庐IT

Await-Tree

全部标签

javascript - 当关键字后的表达式未计算为 promise 时, `await` 会发生什么情况?

我有这样的ES7代码。asyncfunctionreturnsfive(){varthree=3;varthreeP=awaitthree;returnthreeP+2;}returnsfive().then(k=>console.log(k),e=>console.error("err",e))varthreeP=awaitthree行应该发生什么?代码应该按预期继续,还是失败,因为three不是一个promise?在thisrepo,它被称为“有争议的语法和语义”。我无法通读官方文档来找到确切的定义,因为它太技术化了。默认的babel.js转换按预期记录5;然而,nodent-一个

javascript - JavaScript `await` 什么时候真正等待?

我正在阅读thisarticle,并想知道为什么在第一个片段中第二个wait()等待第一个wait()完成,而在第二个片段中两个wait()运行异步?asyncfunctionseries(){awaitwait(500);awaitwait(500);return"done!";}asyncfunctionparallel(){constwait1=wait(500);constwait2=wait(500);awaitwait1;awaitwait2;return"done!";}functionwait(ms){returnnewPromise(r=>setTimeout(r,m

javascript - 在某些情况下省略 'await' 是否合法?

我在我的代码中的几个地方使用了async/await。例如,如果我有这个功能:asyncfunctionfunc(x){...returny;}那么我总是这样调用它:asyncfunctionfunc2(x){lety=awaitfunc(x);...}我注意到在某些情况下,我可以省略await并且程序仍会正确运行,所以我不太清楚什么时候必须使用await和当我可以放下它的时候。我得出的结论是,仅在return语句中直接删除await是“合法的”。例如:asyncfunctionfunc2(x){...returnfunc(x);//insteadofreturnawaitfunc(x

javascript - 解释 Protractor 中的 async/await

我是Protractor的新手。这个函数中的async/await是如何工作的?谁能给我解释一下?it('TC_01-VerifyHomepagetitle',async()=>{awaitheaderPage.waitForTitleContain('Homepage',30000);awaitexpect(headerPage.getTitle()).toEqual('Homepage');}); 最佳答案 这都是关于JavaScript的异步特性。目前Protractor提出了几种处理异步操作的方法,(我没有在这里描述直接的p

javascript - JS/TS 中使用 async/await 的异步有界队列

我正在努力思考async/await,我有以下代码:classAsyncQueue{queue=Array()maxSize=1asyncenqueue(x:T){if(this.queue.length>this.maxSize){//Blockuntilavailable}this.queue.unshift(x)}asyncdequeue(){if(this.queue.length==0){//Blockuntilavailable}returnthis.queue.pop()!}}asyncfunctionproduce(q:AsyncQueue,x:T){awaitq.en

javascript - 为什么带有 'await'的这行代码会触发微任务队列处理呢?

以下引述是我理解微任务队列处理的主要引用资料:Microtasks(whichpromisesuse)areprocessedwhentheJSstackempties.-JakeArchibald这对我来说没有意义。Onego-aroundoftheeventloopwillhaveexactlyonetaskbeingprocessedfromthemacrotaskqueue(thisqueueissimplycalledthetaskqueueintheWHATWGspecification).Afterthismacrotaskhasfinished,allavailable

javascript - 有没有办法将 await/async try/catch block 包装到每个函数?

所以我正在使用express.js并考虑将async/await与节点7一起使用。有没有一种方法我仍然可以捕获错误但摆脱try/catchblock?也许是函数包装器?我不确定这将如何实际执行函数的代码并调用next(err)。exports.index=asyncfunction(req,res,next){try{letuser=awaitUser.findOne().exec();res.status(200).json(user);}catch(err){next(err);}}像这样的……?functionexample(){//Implementstry/catchbloc

javascript - 什么是 Tree Shaking,我为什么需要它?

我已经开始学习Angular2并遇到了“treeshaking”这个术语,但我无法从初学者的Angular找到任何好的解释。我这里有两个问题:什么是treeshaking,我为什么需要它?如何使用它? 最佳答案 我看到你在这里有三个问题;1。什么是摇树?2.有什么需要?3.以及,你如何使用它?1。什么是treeshaking?treeshaking指的是死代码消除。这意味着在构建过程中未使用的模块将不会包含在包中。WhenweimportandexportmodulesinJavaScript,mostofthetimetherei

javascript - typescript 2.1 with async/await 为 angularjs 生成 ES5/ES3 目标

我正在尝试在一个Angular1.5.5项目中使用async/await。鉴于此服务方式getDocumentTypes():angular.IPromise{varurl="api/document/types";this.$log.log(url);returnthis.$http.get(url).then(_=>_.data);}我正在尝试创建该方法的async/await版本。asyncgetDocTypes():angular.IPromise{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}Intellisenseshowsanerror:TS1055

javascript - 在 async/await 上返回多个变量

我想知道是否有一种方法可以在不返回数组或JavaScript对象的情况下获取第二个resolve值(test2)。functiontestFunction(){returnnewPromise(function(resolve,reject){resolve("test1","test2");});}asyncfunctionrun(){varresponse=awaittestFunction();console.log(response);//test1}run(); 最佳答案 您只能传递一项。但是从ES6开始有一个很好的特性叫