jjzjj

asynchronous

全部标签

javascript - JavaScript 回调是否阻塞?

如果我向事件监听器注册了一个耗时的回调函数,并且这个事件在短时间内触发了两次。第二次回调会不会被第一次回调阻塞?我在浏览器中试过这个:document.body.onclick=function(){vardate=newDate;console.log('clickeventat'+date);while(newDate-date结果,在第一个回调完成后立即执行第二个回调。所以现在我对JavaScript非阻塞异步模块感到困惑:异步执行了哪些部分? 最佳答案 浏览器中的Javascript是单线程的,并在事件队列中运行。在触发下一

javascript - 如何解决递归异步 promise ?

我在玩弄promises,我在处理异步递归promise时遇到了麻烦。场景是一位运动员开始跑100米,我需要定期检查他们是否跑完了,一旦他们跑完了,打印他们的时间。编辑以澄清:在现实世界中,运动员在服务器上运行。startRunning涉及对服务器进行ajax调用。checkIsFinished还涉及对服务器进行ajax调用。下面的代码试图模仿它。代码中的时间和距离是硬编码的,目的是让事情尽可能简单。抱歉没有说清楚。结束编辑我希望能够写出以下内容startRunning().then(checkIsFinished).then(printTime).catch(handleError)

javascript - 控制 javascript 异步流的速率(在循环中)

假设您想用一段短代码为列表中的每个文件夹启动一个(随机)进程:varexec=require('child_process').exec;varfolders=[...];//alistfromsomewhere_.each(folders,function(folder){exec("tarcvf"+folder+".tgz"+folder);});如果列表很长,我可能会同时运行大量进程,这是要避免的。以受控速率(此处最多5个并发进程)运行执行的相当简单的方法是什么?编辑:该问题适用于各种异步流(您希望在其中控制速率),而不仅仅是文件夹执行问题。 最佳答案

javascript - 错误 : It isn't possible to write into a document from an asynchronously-loaded external script

我试图在Rails4网站上加载广告并不断收到以下错误onejs?MarketPlace=US&adInstanceId=xxxxxxxx&storeId=xxxxxxx:1Failedtoexecute'write'on'Document':Itisn'tpossibletowriteintoadocumentfromanasynchronously-loadedexternalscriptunlessitisexplicitlyopened.如果我刷新页面,广告就会正常加载。这是来自亚马逊的广告代码,它位于show.html.erb文件中。如果我使用带iframe代码的亚马逊广告没有

javascript - 在构造函数中调用异步函数。

getUser是一个异步函数?如果需要更长的时间来解决?它是否总是会在我的someotherclass中返回正确的值。classIdpServer{constructor(){this._settings={//someidentityserversettings.};this.userManager=newUserManager(this._settings);this.getUser();}asyncgetUser(){this.user=awaitthis.userManager.getUser();}isLoggedIn(){returnthis.user!=null&&!th

javascript - 如何链接异步/等待使用依赖于第一次调用的数据

假设我有一个async/await调用一个获取所有用户的API。asyncfunctiongetUsers(){constusers=awaitApi.getAllUsers()returnusers.map(user=>{return{id:user.id,group:'datadependsonsubsequentAPIcall',}})}在返回映射中,我必须执行另一个API调用以获取一些应该在同一范围内的数据。constgroupByUser=Api.getGroupByUserId()我该如何实现?我可以在现有的中放置一个异步/等待吗?我是否创建一个包含所有用户ID的数组并以某

javascript - 为什么通过 yield 传递回调时 `setTimeout` 不起作用?

在下面的代码中:functionso(){console.log('insidethetimer')}function*sogen(){constcallback=yield;setTimeout(callback,2000);return1;}function(){vargen=sogen();gen.next(so),gen.next(so);}()为什么我永远不会到达函数so? 最佳答案 tl;dr您需要用括号将IIFE括起来,或者根本不使用IIFE。您对生成器的使用没有问题,一旦您添加了括号,一切都正常工作。请注意,您实际上

JavaScript:一个一个地执行异步函数

我有一个简单的“异步”JS函数:functionasyncFunc(i){setTimeout(function(){console.log(i);},1000);}如果我想在一个for循环中执行这个asyncFunc5次,即每秒记录1-5次,总共花费5秒。12345我知道jQuery的when().done()可以做到这一点,但是如果我在没有第3方JS库的环境中,实现此目的的最简单优雅的方法是什么?实际上,例如我想写一个util函数,它接受一个异步函数数组,这个util函数可以一个一个地执行传入的函数:functionexecAsyncTasks([asyncTask1,asyncT

javascript - 嵌套在 async.js waterfall 中的异步函数

免责声明:非工程师,对JS非常陌生大家好-我正在尝试利用async.js模块将一组函数链接在一起。我想要的输出是遍历mapData(对象数组),然后再将其传递给最终函数(现在-只是console.log(result)。async.waterfall([function(callback){getCoords(function(data){mapData=data;});callback(null,mapData);},function(mapData,callback){//getEmail(mapData);callback(null,mapData);}],function(er

javascript - 如何知道 npm `unzip` 模块何时完成解压缩文件?

我正在使用npm的unzip模块来提取zip存档的内容。我需要知道它何时完成提取以及文件已完全写入磁盘。我的代码:fs.createReadStream('master.zip').pipe(unzip.Extract({path:'gitdownloads/repo'}));我尝试过的:我的第一个想法是我可以接入流并监听完成事件,但是unzip只接受输入:它不会返回另一个流。我还查看了unzip模块是否有“完成”回调。运气不好。 最佳答案 来自githubREADMEExtractemitsthe'close'eventoncet