草庐IT

栈和队列(stack和queue)

全部标签

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 - 如何创建像 Stack Overflow 那样的视觉差异 View ?

StackOverflow的差异View非常好。我想用javascript做这个,但我不知道如何开始,谁能给点建议?例如: 最佳答案 你可以试试google-diff-match-patch项目,该项目提供了强大的算法来执行同步纯文本所需的操作。演示:http://jsfiddle.net/N6bAn/代码:thestackoverflowquestionandanswerversioncontrolisverywell,iwanttodothisusejavascript,butidon'tknowhowtostart,whoca

JavaScript 递归 : Maximum call stack size exceeded

我有一个递归函数,可以在Canvas上移动一些圆圈。覆盖的圆圈被放大(放大),所有其他圆圈被推开。插入的圆圈插入其他圆圈等等,直到缩放完成。我收到错误消息“超出最大调用堆栈大小”,我理解这个问题,但我就是不知道如何解决...我找到了解决一般递归问题的三种可能的解决方案:将递归改为迭代使用memoization使用SetTimeout但我认为我不能使用它们中的任何一个:我无法实现迭代,因为所需的操作数未知我不太了解内存,但我认为它也不适合(或者我错了,有人可以告诉我不同​​的说法?)我不能使用SetTimeout,因为它应该在这个特定的动画中阻止函数调用。我该如何解决这个问题?//Pus

javascript - Chrome : How to solve "Maximum call stack size exceeded" errors on Math. max.apply(数学,数组)

我必须找到非常大的数组的最大值和最小值。为此,我正在使用Math.max.apply(Math,my_array);Math.min.apply(Math,my_array);它在Firefox和IE上运行良好,但在Chrome上我总是得到Maximumcallstacksizeexceeded错误...我当前的数组有221954个元素,这不是我最大的。有人知道如何在Chrome上解决这个错误吗?如何优化最大值和最小值的搜索?对于那些不相信的人,请在Chrome的控制台中尝试:varxxx=[]for(vari=0;i--->RangeError:超出最大调用堆栈大小

javascript - Javascript 或 jQuery 中的线程安全队列

我有许多异步AJAX调用,其结果将得到处理。处理发生的顺序无关紧要,但结果需要一次处理一个。所以我想简单地执行我的AJAX调用,它们都只是将结果放在一个队列中。然后应该在单个线程上处理该队列。这样,结果会尽快得到处理。执行此操作的最佳方法是什么?我正在使用jQuery,很高兴利用它为此提供的任何功能。 最佳答案 异步并不意味着“多线程”。考虑在处理第一个点击处理程序之前连续触发许多点击事件。一次只能处理一个Action,其他Action等待执行。像Javascript这样的事件驱动语言是在队列的基础上运行的。后台的Javascrip

javascript - AngularJS 中的生产者消费者队列

我从几年前就开始了解python和数据库。但我想提高我有限的JavaScript知识。对于我的玩具项目,我想在Web浏览器中使用异步队列并为此使用AngularJS。在python中有一个很好的类叫做multiprocessing.Queue我过去用过。现在我搜索类似这样的东西,但是在AngularJS中第1步:队列中拉取工作项(粉色圆圈)。只是一个Viewjson字节。第2步:用户处理数据。第3步:出队列负责将结果发送到服务器。为什么这个“复杂”的设置?因为我希望应用程序尽可能地响应。入队列预加载一些数据,出队列处理响应通信。另一个好处是,通过此设置,应用程序可以处理几分钟的服务器或

javascript - 是什么导致 "Uncaught RangeError: Maximum call stack size exceeded"错误? (Chrome,在其他浏览器中其他消息)

找不到导致该错误的原因,以及如何找到解决方案...在project下工作:http://atlas.sitegist.net/business/atlas/?l=en&h=6dff16b6f593384662cb24d66142047a在项目中,我用整数值显示不同的数据,所有这些数据也显示在map上。当我添加新数据集的另一个可视化时,发生错误。测试信息:大多数情况下我必须在UI中做一些事件,当然还要做一些下面列出的混合:必须单击“项目”按钮,然后在我的项目的工具栏部分选中/取消选中复选框必须单击左侧边栏面板上的事件(无需展开折叠,对于给定的数据集,对象的选择是通过选择父项进行的)有时会

javascript - 如何格式化类似于 Stack Overflow 信誉格式的数字

我想将数字转换为字符串表示形式,其格式类似于StackOverflow信誉显示。例如999=='999'1000=='1,000'9999=='9,999'10000=='10k'10100=='10.1k' 最佳答案 另一种完全产生所需输出的方法:functiongetRepString(rep){rep=rep+'';//coercetostringif(rep查看输出结果here. 关于javascript-如何格式化类似于StackOverflow信誉格式的数字,我们在Stack

javascript - 在队列中预加载 mp3 文件以避免在播放队列中的下一个文件时出现任何延迟

我正在编写一个脚本,我正在播放多个mp3并且每个文件都在队列中。播放下一个.mp3文件时会有轻微延迟,因为缓冲/加载文件需要时间。我如何缓冲队列中的下一个.mp3文件,以便所有文件顺利运行而没有任何延迟。getData(1);functiongetData(id){//Emtydiv$("#surah-wrapper").empty();$.ajaxSetup({cache:true,jsonpCallback:'quranData'});//defineajaxsetup//QuranTextTypequran-uthmani|quran-simple|quran-simple-cl