草庐IT

javascript - 在函数中处理异步调用 (Firebase)

现在我已经好几次遇到使用Firebase的同步和异步函数的问题。我的问题通常是我需要在我编写的函数中进行异步Firebase调用。举个简单的例子,假设我需要计算和显示一个物体的速度,我的Firebase存储距离和时间:functioncalcVelocity(){vardistance,time,velocity;firebaseRef.once('value',function(snapshot){distance=snapshot.val().distance;time=snapshot.val().time;velocity=distance/time;});returnvelo

javascript - While 循环使用 jQuery 异步 AJAX 调用

事情:我有一个页面,它必须显示不确定数量的图像,通过AJAX(在服务器端使用base64编码)一张一张地加载。varposition='front';while(GLOB_PROCEED_FETCH){getImageRequest(position);}functiongetImageRequest(position){GLOB_IMG_CURR++;$.ajax({url:urlAJAX+'scan='+position,method:'GET',async:false,success:function(data){if((data.status=='empty')||(GLOB_

javascript - 将函数 * 提升为异步函数 *?

假设我有一个函数,它接受一个生成器并返回第一个n元素的另一个生成器:consttake=function*(n,xs){console.assert(n>=0);leti=0;for(constxofxs){if(i==n){break;}yieldx;i++;}};用法如下:constevens=function*(){leti=0;while(true){yieldi;i+=2;}};for(constxoftake(10,evens())){console.log(x);}现在假设evens也是async(设置见thisanswer):constevensAsync=asyncf

javascript - VueJS 异步组件数据和 promise

试用VueJS2.0RC,并使用fetchAPI为某些组件加载一些数据。这是一个模拟示例:constComponent={template:'#comp',name:"some-component",data:function(){return{basic:data.subset,records:function(){returnfetch('/datasource/api',{method:'get'}).then(function(response){returnresponse.json();}).then(function(response){if(response.statu

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 异步循环处理

我有一个javascript循环需要一些时间来处理。我希望我能把它瘦下来,但它必须处理大量数据。当它运行时,浏览器当然会变得无响应。我读过在javascript中处理此问题的最佳方法是使用某种异步循环。这样鼠标点击等可以在循环处理之间继续处理。是否有任何适用于此的标准异步框架?或者有人可以提供一个简单的例子来说明如何编码吗?谢谢! 最佳答案 遗憾的是,WebWorkers还不能在每个人的浏览器上使用。我一直在使用“setTimeout(Func,0);”大约一年的把戏。这是我最近写的一些研究来解释如何加快速度。如果您只想要答案,请跳

javascript - 异步 Javascript 程序如何交互

回到网络开发的早期,我学到了一些民间智慧,对于像这样的代码浏览器会暂停,加载javascript,编译,执行,移动到下一个script标签,然后重复。通过这种方式,浏览器将处理页面上的所有javascript,并将其视为一个线性程序。然而,在崭新的现代javascript世界中,我们通过async属性进行异步加载据我所知,这是一件好事,因为现在浏览器不需要暂停、下载脚本和执行它。相反,它开始下载脚本,但会继续解析DOM。即网页在等待javascript下载时不再阻塞。(如果这不是真的,我将不胜感激。)然而,不太清楚(也更难测试)的是这两个程序如何交互。它们似乎在同一个共享空间中运行(即

javascript - React Enzyme - 测试 `componentDidMount` 异步调用

每个人。在componentDidMount中发生异步调用后,我在测试状态更新时遇到了奇怪的问题。这是我的组件代码:'usestrict';importReactfrom'react';importUserComponentfrom'./userComponent';constrequest=require('request');classUsersListComponentextendsReact.Component{constructor(props){super(props);this.state={usersList:[]};}componentDidMount(){reque

javascript - 是否可以在没有 return 关键字的情况下解析异步函数

我开始使用ES7特性async/await,它提供了处理异步任务的最佳方法,并使您的代码更清晰和可读。但是,它不会让您访问由异步函数创建的Promise,因此如果您在异步函数中执行一些异步请求,您应该对其进行promisify,然后等待它,然后返回结果。我的意思是:asyncfunctiondoStuff(){//stuff...varvalue=awaitnewPromise(function(resolve){$.get('http://some/url/...',function(result){//stuff...resolve(result);});});returnvalu

javascript - 使用 document.write 异步加载 javascript

我正在尝试异步googlemapapijavascript。所以,正常的脚本标签有效但是,下面的异步版本没有。(function(){vargmap=document.createElement('script');gmap.type='text/javascript';gmap.async=true;gmap.src='https://maps.googleapis.com/maps/api/js?sensor=false';vars=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(gmap,s