草庐IT

Async-await

全部标签

javascript - 使用 promise 等待触发的事件

在下面的代码中,thing是一个我无法控制的外部对象;我无法更改thing的事件系统的工作方式。当fn被调用时,我们返回一个promise,其执行者监听一个事件,然后开始等待一系列最终导致该事件被触发的函数:functionfn(){returnnewPromise(asyncfunction(resolve,reject){//Thishandlermustbeattachedbefore`c`iscalledthing.once('myEvent',function(e){resolve(e.data);//done});//Theorderofthesefunctionscall

javascript - 返回一个等待的值会返回一个 Promise? (es7 异步/等待)

constret=()=>newPromise(resolve=>setTimeout(()=>resolve('somestring'),1000));asyncfunctionwrapper(){letsomeString=awaitret();returnsomeString;}console.log(wrapper());它记录Promise{};为什么它返回一个Promise而不是'somestring'?我正在使用BabelES7预设来编译它。 最佳答案 异步函数返回promise。为了做你想做的事,试试这样的事情wra

javascript - 如何通过 expect.js async done() 出错的测试?

Mocha网站声明:“为了让事情变得更简单,done()回调接受一个错误,所以我们可以直接使用它:[参见他们的例子]”那么让我们试试看:it('works',function(done){expect(1).to.be(1)done(newError('expectederror'))})/*Inserttheerrormanuallyfortestingandclarity.*/运行它并:1failing1)works:Error:expectederroratContext.[stacktrace]当错误响应是期望的结果时,我们如何使测试通过? 最佳答案

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 - 获取在 Promise.race 中完成了哪个 promise

上下文:我需要进行大量可并行的异步调用(大约300到3000次ajax调用)。但是,我不想通过一次调用它们来增加浏览器或服务器的压力。我也不想按顺序运行它们,因为需要很长时间才能完成。我决定一次运行五个左右,并为此派生了这个函数:asyncfunctionasyncLoop(asyncFns,concurrent=5){//queueupsimultaneouscallsletqueue=[];for(letfnofasyncFns){//firetheasyncfunctionandadditspromisetothequeuequeue.push(fn());//ifmaxconc

javascript - 等待相当于 'Promise.resolve().then()' ?

我熟悉Promises,但继承了一些相当不寻常的代码,而不是制作newPromise(),而是使用以下代码:Promise.resolve().then(function(){//Dousefulthings})根据我的研究,这是一个weirdversionofsetImmediate-即,在下一次滴答时运行以下函数。await版本是什么? 最佳答案 Promise.resolve()可能有两个不同的原因。你触及了其中之一:延迟到JS事件循环的当前运行结束这里显而易见的答案是awaitPromise.resolve();。await

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 - 在 Angular.js 中使用 <script async> 标签

IlyaGrigorik建议使用尽可能标记。是否有一种干净、首选的方式来使用标签加载Angular.js应用程序,而不使用像require.js或angular-seed推荐的$script.js工具这样的工具?明显的问题是执行顺序。例如预防:UncaughtReferenceError:angularisnotdefinedhttps://www.igvita.com/2014/05/20/script-injected-async-scripts-considered-harmful/ 最佳答案 如果有一些有用的东西可以在没An

javascript - 如何选择一个事件监听器,让我等到 async.times 完成运行一个函数

我正在使用node.js服务器、SpotifyAPI和spotify-web-api-jsnode模块创建一个web应用程序,用户可以在其中输入艺术家的名字,查看相关艺术家的歌曲列表,然后可选择将该播放列表保存到他们自己的Spotify帐户。但是,我在最后一步仍然遇到问题。我的用户授权流程首先发生:if(params.access_token){s.setAccessToken(params.access_token);s.getMe().then(function(data){console.log(data);console.log(data.id);user_id=data.id