第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

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

3 回答

?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗 獲得超8個贊

這是一個演示執(zhí)行這個“異步”循環(huán)。它將迭代“延遲”1ms,在此延遲內(nèi),它為UI提供了做某事的機(jī)會。

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

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




查看完整回答
反對 回復(fù) 2019-08-04
  • 3 回答
  • 0 關(guān)注
  • 329 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號