gpt4 book ai didi

javascript - 如何将Promise.all改成一个一个发送请求

转载 作者:行者123 更新时间:2023-11-30 07:19:20 27 4
gpt4 key购买 nike

我有一组分块数据,我需要一次上传一个 block 。当前的实现我用它来封装 Promise.all() 中的逻辑,因为我需要返回 promise 的结果,这种方法的问题是所有上传都是异步完成的,导致超时错误,因为服务器无法同时处理所有请求,如何修改此方法以便一次完成一个 block 的上传? .

我的代码:

var chunks = _.chunk(variableRecords, 30);
return Promise.all(
chunks.map(chunk => this.portalService.updateDataForChart(variableId, chunk)))
.then((updateRes: boolean[]) => {
if (updateRes.every(updateStatus => updateStatus)) {
return this.executeRequest<HealthDataSource, boolean>({
path: `/variable/user/datasources/${dataSource.identifier}`,
method: 'PUT',
body: {
libelle: dataSource.datasource.libelle,
type: dataSource.datasource.type,
lastSyncDate: Math.max(maxDate, dataSource.datasource.lastSyncDate)
},
headers: this.getHeaders()
});
} else {
return false;
}
});

最佳答案

您需要在 SEQUENCE 中使用它们,因为 of 是必经之路:

async function chunksSequence(chunks) {
for(const chunk of chunks) {
await // your other code here
}
};

如果您需要返回

async function chunksSequence(chunks) {
let results = []
for(const chunk of chunks) {
let result = await // your other code here
results.push(result)
}
return results
};

因为返回 promise 中需要备注

async function chunksSequence(chunks) {
return new Promise((resolve, reject)=>{
let results = []
for(const chunk of chunks) {
let result = await // your other code here
results.push(result)
}
resolve(results)
}
};

关于javascript - 如何将Promise.all改成一个一个发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59105852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com