React 异步发送消息并循环:使用 async/await 实现消息队列
你可以使用React和JavaScript中的async/await来实现这个功能。下面是一个用React实现的示例代码:
import React, { useEffect, useState } from 'react';
const MessageSender = () => {
const [messages, setMessages] = useState([
'Message 1',
'Message 2',
'Message 3',
]);
const [currentMessage, setCurrentMessage] = useState('');
const [response, setResponse] = useState('');
useEffect(() => {
sendMessage();
}, []);
const sendMessage = async () => {
if (messages.length > 0) {
const message = messages[0];
setMessages((prevMessages) => prevMessages.slice(1));
setCurrentMessage(message);
try {
const response = await sendMessageToServer(message);
setResponse(response);
// 继续发送下一条消息
sendMessage();
} catch (error) {
console.error(error);
}
}
};
const sendMessageToServer = (message) => {
return new Promise((resolve, reject) => {
// 模拟发送消息到服务器
setTimeout(() => {
// 假设服务器总是返回 'OK' 作为回复
resolve('OK');
}, 1000);
});
};
const handleInputChange = (event) => {
setCurrentMessage(event.target.value);
};
const handleSubmit = (event) => {
event.preventDefault();
setMessages((prevMessages) => [...prevMessages, currentMessage]);
setCurrentMessage('');
};
return (
<div>
<h1>Message Sender</h1>
<form onSubmit={handleSubmit}>
<input
type='text'
value={currentMessage}
onChange={handleInputChange}
/>
<button type='submit'>Send</button>
</form>
<p>Response: {response}</p>
</div>
);
};
export default MessageSender;
在这个示例中,messages数组保存待发送的消息。使用useState来管理messages数组、当前消息currentMessage和服务器的回复response。useEffect在组件加载时调用sendMessage函数。sendMessage函数使用async/await来发送消息并等待服务器的回复,然后递归调用sendMessage函数发送下一条消息。sendMessageToServer函数模拟了发送消息到服务器的过程,使用setTimeout来模拟异步操作。handleInputChange和handleSubmit函数用于处理用户输入的消息。
这是一个简单的示例,你可以根据实际需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/pVvf 著作权归作者所有。请勿转载和采集!