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

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

Vue js 按塊發(fā)送數(shù)據(jù)

Vue js 按塊發(fā)送數(shù)據(jù)

犯罪嫌疑人X 2023-09-21 16:52:37
我想按塊發(fā)送數(shù)據(jù),現(xiàn)在我發(fā)送到服務(wù)器的數(shù)據(jù)看起來像這樣 for 循環(huán) - 1, 2, 3 服務(wù)器接收的內(nèi)容:3,1,2 -> 異步。我需要同步發(fā)送它,以便服務(wù)器將接收我的 for 循環(huán)順序:1,2,3 我該怎么做?//52428800                const chunkSize = 1377628                let beginUpload = data;                let component = this;                let start = 0;                let startCount = 0;                let callStoreCouunt = 0;                                for (start; start < zipedFile.length; start += chunkSize) {                    const chunk = zipedFile.slice(start, start + chunkSize + 1)                    startCount +=1;                        // debugger                        // var base64Image = new Buffer( zipedFile ).toString('base64');                        var base64Image = new Buffer( chunk ).toString('base64');                        console.log(chunk, startCount);                    let uploadPackage: documentInterfaces.UploadPackage = {                        transaction: {                            documentId: {value: data.documentId.value},                            transactionId: data.transactionId,                            fileGuid: data.fileGuid                        },                        packageBuffer: base64Image                    };                    // debugger                                        component.$store.dispatch('documents/uploadPackage', uploadPackage)                    .then(({ data, status }: { data: documentInterfaces.ReciveAttachScene , status: number }) => {                        // debugger                        if(status !== 200){                            component.$message({                                message: data,                                type: "error"                            });                            component.rejectUpload(beginUpload);                        }
查看完整描述

1 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

您無法控制哪個(gè)數(shù)據(jù)塊首先到達(dá)服務(wù)器。如果途中某個(gè)地方出現(xiàn)網(wǎng)絡(luò)問題,它可能會(huì)繞地球多次才能到達(dá)服務(wù)器。


即使第一個(gè)塊早于第二個(gè)塊發(fā)送5 ms,第二個(gè)塊也可能會(huì)更早到達(dá)服務(wù)器。


但有幾種方法可以解決這個(gè)問題:


方法一:

在發(fā)送下一個(gè)塊之前等待服務(wù)器響應(yīng):


let state = {

  isPaused: false

}

let sentChunks = 0

let totalChunks = getTotalChunksAmount()

let chunkToSend = ...


setInterval(() => {

  if (!isPaused && sentChunks < totalChunks) {

    state.isPaused = true

    send(chunkToSend)

    sentChunks += 1

  }

}, 100)


onServerReachListener(response => {

  if (response === ...) {

    state.isPaused = false

  }

})

方法二:

如果你不需要實(shí)時(shí)順序處理塊,你可以等待它們?nèi)康竭_(dá)服務(wù)器,然后在處理之前對它們進(jìn)行排序:


let chunks = []

onChunkReceived (chunk) {

  if (chunk.isLast) {

    chunks.push(chunk)

    chunks.sort()

    processChunks()  

  }

  else {

    chunks.push(chunk)

  }

}

方法三:

如果您確實(shí)需要實(shí)時(shí)按順序處理塊,請為所有塊指定 id 屬性并按順序處理它們,同時(shí)存儲(chǔ)其他塊供以后使用:


let chunksToProcess = []

let lastProcessedChunkId = -1 

 

onChunkReceived (chunk) {

  if (chunk.id === lastProcessedChunkId) { 

    processChunk()

    lastProcessedChunkId += 1

    processStoredChunks()

  }

  else {

    chunksToProcess.push(chunk)

  }


查看完整回答
反對 回復(fù) 2023-09-21
  • 1 回答
  • 0 關(guān)注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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