亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在不阻塞UI的情況下迭代數組的最佳方法

在不阻塞UI的情況下迭代數組的最佳方法

喵喵時光機 2019-08-03 14:03:49
在不阻塞UI的情況下迭代數組的最佳方法我需要迭代一些大型數組,并通過API調用將它們存儲在主干集合中。什么是最好的方法來做到這一點,而不讓循環導致接口變得沒有響應?由于返回的數據非常大,Ajax請求的返回也會阻塞。我認為我可以將其拆分,并使用setTimeout使其以較小的塊異步運行,但是否有更簡單的方法來做到這一點。我認為一個網絡工作者會很好,但是它需要改變一些保存在UI線程上的數據結構。我嘗試使用它來執行Ajax調用,但是當它將數據返回給UI線程時,接口仍然沒有響應。提前謝謝
查看完整描述

3 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

這是一個演示執行這個“異步”循環。它將迭代“延遲”1ms,在此延遲內,它為UI提供了做某事的機會。

function asyncLoop(arr, callback) {
    (function loop(i) {

        //do stuff here

        if (i < arr.Length) {                      //the condition
            setTimeout(function() {loop(++i)}, 1); //rerun when condition is true
        } else { 
            callback();                            //callback when the loop ends
        }
    }(0));                                         //start with 0}asyncLoop(yourArray, function() {
    //do after loop  });//anything down here runs while the loop runs

有其他的選擇,比如網絡工作者目前擬議的setImmediate哪個是AFAIK論IE,加上前綴。




查看完整回答
反對 回復 2019-08-04
  • 3 回答
  • 0 關注
  • 333 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號