gpt4 book ai didi

javascript - 在 fetch api 中的 javascript 中重新排列响应

转载 作者:行者123 更新时间:2023-12-01 01:55:55 26 4
gpt4 key购买 nike

我目前在javascript中使用fetch api,我有一个月份数组,我想要的是从数据库中获取月份的值,并且该值是正确的,但结果是console 正在重新排列月份数组,如何防止重新排列数组?

async function getMonthAccomplishment(m, s) {
this.m = m;
this.s = s;

const param_point = 'filecase/monthaccomplishment/' + this.m + '/' + this.s;

this.endpoint = url() + param_point;

return await fetch(this.endpoint, {credentials: 'include'})
.then((resolve) => {
if(resolve.ok) {
return resolve.text();
}
}, rejected => { console.error(rejected); })
.then((response) => {
return response;
}).catch((error) => {
console.error(error);
});
}

let PostMonthAccomplishment = function() {
this.m = '';
this.s = '';
this.t = '';
};

PostMonthAccomplishment.prototype.set = function(m, s, t) {
this.m = m;
this.s = s;
this.t = t;

if(typeof this.m === 'object' && typeof this.s === 'string') {
this.m.forEach((month) => {
getMonthAccomplishment(month, this.s)
.then((data) => {
console.log(month + ': ' + this.s + ' -> ' + data);
});
});
} else {
console.error('invalid typeof!');
}
};

const months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];
const status = ['beginning+balance', 'case+receive', 'Decided/Report+&+Recom.+Submitted+from+Pending'];

let pma = new PostMonthAccomplishment();
pma.set(months, status[1], '');

然后结果:有时

dar:27 january: case+receive -> 0
dar:27 april: case+receive -> 0
dar:27 may: case+receive -> 0
dar:27 march: case+receive -> 0
dar:27 june: case+receive -> 0
dar:27 february: case+receive -> 0
dar:27 july: case+receive -> 0
dar:27 august: case+receive -> 0
dar:27 september: case+receive -> 0
dar:27 october: case+receive -> 0
dar:27 november: case+receive -> 0
dar:27 december: case+receive -> 0

有时

dar:27 january: case+receive -> 0
dar:27 february: case+receive -> 0
dar:27 june: case+receive -> 0
dar:27 april: case+receive -> 0
dar:27 march: case+receive -> 0
dar:27 may: case+receive -> 0
dar:27 july: case+receive -> 0
dar:27 august: case+receive -> 0
dar:27 september: case+receive -> 0
dar:27 october: case+receive -> 0
dar:27 november: case+receive -> 0
dar:27 december: case+receive -> 0

最佳答案

如果您想按顺序执行操作,很容易只需使用多行等待语句,并将一个异步调用的输出通过管道传输到另一个异步调用,就像通常使用 Promise 所做的那样。您应该将数组数据放入异步函数中像这样的东西:并行请求的代码

async function processArr(arr) {
let pArray = []
for(const item of arr) {
let response = await fetch('https://jsonplaceholder.typicode.com/posts/'+ item)
pArray.push(response.json())
}
const months = await Promise.all(pArray);
console.log(months)
return months
}

processArr([1, 2, 3])

p/s 更新按顺序

async function processArr(arr) {
let pArray = []
for(const item of arr) {
let response = await fetch('https://jsonplaceholder.typicode.com/posts/'+ item)
let data = await response.json();
}
}

processArr([1, 2, 3])

关于javascript - 在 fetch api 中的 javascript 中重新排列响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51037408/

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