我正在努力想出一个动态的解决方案,我有一个项目数组,我需要为数组中的每个项目发送一个POST请求,但我不想发送下一个请求,直到前一个promise 得到解决.
因此动态链接.then()个方法,即发送第一个POST请求,在发送第二个POST请求之前等待解析,在发送第三个POST请求之前等待解析第二个,等等.
下面是我的静态代码,我在其中为命令有效负载数组中的第一个项目发送POST请求,然后在解析第一个项目后发送第二个项目的POST请求.
const commandPayloads = await createInitialCommands(copiedCommands);
commandPOSTFetch(commandPayloads[0], newResponseSetID).then(() => {
commandPOSTFetch(commandPayloads[1], newResponseSetID);
});
const commandPOSTFetch = async (command, newResponseSetID) => {
const res = await fetch(`https://${someWebSite}/${appID}//${interactionID}/response/${newResponseSetID}/commands.json`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(command),
}
);
const data = await res.json();
return data;
};
如果数组中有2个项目,上面的示例是有效的,但如果我有2个以上的项目怎么办?
如何根据数组中的项数使此逻辑动态化,以便只有在解析前一个请求之后才按顺序发送POST请求?
*使用For循环进行更新
commandPayloads.forEach(async (command, i) => {
const data = await commandPOSTFetch(command, newResponseSetID)
console.log('in loop', data);
});