草庐IT

co_await

全部标签

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 - 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开始有一个很好的特性叫

javascript - await 的异步映射函数返回 Promise 而不是值

我有这个代码asyncfunctionaddFiles(dir,tree){return(awaitreadDir(dir)).map(async(name)=>{awaitreadDir(dir);returnname;})}但不幸的是,它只返回一堆promise,因为map中的异步函数没有被等待。我想知道是否有任何方法可以等待上面代码中的映射函数。 最佳答案 尝试asyncfunctionaddFiles(dir,tree){constfiles=awaitreadDir(dir)awaitPromise.all(files.m

javascript - 为什么这个 JavaScript async/await 代码没有按预期运行?

我已经尝试阅读有关异步/等待的指南和教程,但我似乎无法在任何地方找到解决这个问题的方法。这里是有问题的代码:varfunc1=newPromise((resolve,reject)=>{console.log("Func1");setTimeout(()=>{resolve(10);},100);});varfunc2=newPromise((resolve,reject)=>{console.log("Func2");setTimeout(()=>{resolve(20);},5000);})letrun=async()=>{letvar1=awaitfunc1;letvar2=aw

javascript - ES2017 Async/await 函数 - 它们只适用于 promises 吗?

我开始在我的js应用程序(由Babel转译)中使用async/awaitES7函数。如果错了请纠正我,但它们只适用于Promises吗?如果是,这意味着我需要将常规回调函数包装到Promises中(顺便说一句,我目前正在做的事情)。 最佳答案 当前(也可能是最终的)async/await提案等待promises和脱糖成类似bluebird的Promise.coroutine的东西,其中await扮演yield.这是有道理的,因为promise代表值(value)+时间,而您正在等待该值(value)可用。注意await也在所有其他包

javascript - async/await 不能与 fetch 结合使用

我正在尝试将ES7async/await与fetch一起使用。我知道我很接近,但我无法让它工作。这是代码:classBar{asyncload(){leturl='https://finance.yahoo.com/webservice/v1/symbols/goog/quote?format=json';try{response=awaitfetch(url);returnresponse.responseText;}catch(e){returne.message;}}}我使用如下:letbar=newBar();bar.load().then(function(val){cons

javascript - JSHint 无法识别 Visual Studio Code (VSCode) 中的 Async/Await 语法

我一直在努力使用VSCode和JSHint来寻找摆脱这种语法高亮显示的方法。似乎JSHint无法识别Async/Await语法。在这里您可以找到我正在谈论的内容的屏幕截图。我的JSHint版本:jshint-esnextv2.7.0-3 最佳答案 在visualstudiocode中,JSHint和ESLint相互抵消。所以如果你想在vscode中使用异步函数,那么你必须禁用Jshint并启用eslint。 关于javascript-JSHint无法识别VisualStudioCode(