iT邦幫忙

0

js array操作和同步非同步的問題?

從一個持續增加(push)的array中

不斷從這個array把內容拉出來(shift)

shift出來的內容會延遲一段時間(fetch upload data)

收到回應結束後才

可以再繼續把array的內容拉出(shift)

直到array的內容沒有持續增加

https://ithelp.ithome.com.tw/upload/images/20200910/20126597B5Ky7VhivR.jpg

2 個回答

1
Han
iT邦新手 3 級 ‧ 2020-09-10 18:20:14
(async () => {
    var ary = [1,2,3];
    while(ary.length === 0)
    {
        var para = ary.pop();
        await fetch(....);
    }
})();

你要的是這樣嗎??

看更多先前的回應...收起先前的回應...

有點像是

水不斷流到容器中這個容器有一個開口

從這個開口取固定大小的水作處理
處理完畢才可以再取出處理

Loop直到水不再流到容器中

Han iT邦新手 3 級 ‧ 2020-09-10 18:44:00 檢舉

那就要看你實際怎應用了,會有不同的方法來做對應

fillano iT邦超人 1 級 ‧ 2020-09-11 14:07:32 檢舉

我覺得比較大的問題是,既然寫入跟讀出陣列都非同步,那要如何確定「直到array的內容沒有持續增加」這件事情。

我的想法是
紀錄寫入的次數和讀出的次數
以及判斷從array中已經讀不到資料
且已經確定關閉寫入資料的動作

因為寫入的動作是可以手動關閉的

像這樣

if (inputcount == outputcount && 
    array.length == 0 && 
    writeSwitch == false) {
    console.log('內容無持續增加')
}
1357246
iT邦見習生 ‧ 2020-09-10 22:16:07
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答