Javascript 如何在HTTP请求中放置缓冲区?
我试图在请求中放入缓冲区,因为我有一个要导入的数据列表。我想要一个接一个的成功请求。我遇到的问题是,它等待上载请求的所有数据 以下是示例数据:Javascript 如何在HTTP请求中放置缓冲区?,javascript,http,Javascript,Http,我试图在请求中放入缓冲区,因为我有一个要导入的数据列表。我想要一个接一个的成功请求。我遇到的问题是,它等待上载请求的所有数据 以下是示例数据: [ { “联系人”:dsds@dsd.com", “收件人”:dsd@dsd.com", “发送日期”:“2020年8月7日17:05:04”, “主题”:“回购” }, { “联系人”:asd@ret.com", “收件人”:test@yahoo.com", “发送日期”:“2020年10月7日17:31:51”, “主题”:“商业” }, { “联系
[
{
“联系人”:dsds@dsd.com",
“收件人”:dsd@dsd.com",
“发送日期”:“2020年8月7日17:05:04”,
“主题”:“回购”
},
{
“联系人”:asd@ret.com",
“收件人”:test@yahoo.com",
“发送日期”:“2020年10月7日17:31:51”,
“主题”:“商业”
},
{
“联系人”:we@sdf.com",
“收件人”:abc@yahoo.com",
“发送日期”:“07/09/2020 13:02:54”,
“主题”:“摇滚乐”
}
];
const createEngage=async(主体)=>{
const BASE_URL='/api/import'
var请求选项={
方法:“POST”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
},
身体:身体
};
获取(基本URL、请求选项)
.then(response=>response.text())
。然后(异步结果=>{
控制台日志(结果);
})
.catch(error=>console.log('error',error));
}
您可能想做的是在数据上循环,并使用async/wait
在每次迭代中等待。异步函数的实现目前不会等待任何东西。相反,它应该等待fetch
请求,并使用response.text()对正文进行解码
检查响应是否有错误,并将fetch
请求包装在try…catch
块中。如果发生错误,则将执行catch
块。否则,请检查对象是否存在任何要包括的状态或错误
const data = [
{
"contacts": "dsds@dsd.com",
"recipient": "dsd@dsd.com",
"date_sent": "07/08/2020 17:05:04",
"subject": "repurchase"
},
{
"contacts": "asd@ret.com",
"recipient": "test@yahoo.com",
"date_sent": "07/10/2020 17:31:51",
"subject": "biz"
},
{
"contacts": "we@sdf.com",
"recipient": "abc@yahoo.com",
"date_sent": "07/09/2020 13:02:54",
"subject": "rock"
}
];
大家好,欢迎来到SO。你能详细说明一下你的缓冲区是什么,你想做什么,还有什么不起作用。尽可能具体。Hi-Emiel,我尝试一次发布1个数据。如果1个数据成功,它将继续。一个数据失败。弹出窗口将发出警报。非常感谢。嗨@trincot!!我想把它拿回来。我不知道发生了什么事。感谢manThanks@Emiel Zuurbier的帮助!!如果答案回答了您的问题并解决了您的问题,请随意接受。
const BASE_URL = '/api/import'
/**
* Sends a request for each individual item.
*/
const createEngage = async body => {
const requestOptions = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body
};
try {
const response = await fetch(BASE_URL, requestOptions);
if (!response.ok) {
alert('Your request has failed');
return null;
}
const text = await response.text();
return text;
} catch(error) {
alert('Your request caused an error');
}
};
/**
* Loop over each item and call createEngage.
* Wait for the request to finish and continue.
*/
const createMultipleEngages = async data => {
for (const item of data) {
const result = await createEngage(item); // This will make the loop wait every time.
console.log(result);
}
};
// Call the function and start looping.
createMultipleEngages(data);