client.socket.on('data')
вызывается два раза — для каждого ответа от сервера. А промис вы возвращаете сразу как получили первый ответ.sendCommand(cmd) {
if(cmd) {
this.socket.write(cmd + '\u0000\r\n');
}
return new Promise((resolve, reject) => {
const chunks = [];
const handleData = chunk => {
chunks.push(chunk);
};
const handleError = err => {
reject(err);
};
const handleEnd => {
const data = Buffer.concat(chunks).toString().match(/.*?\r\n/g);
resolve(data);
}
this.socket.on('data', handleData);
this.socket.on('error', handleError);
this.socket.on('end', handleEnd);
});
}
class example extends React.Component {
state = {
data: [],
isLoading: true,
}
componentDidMount() {
fetch('example/url')
.then(response => response.json())
.then(data => this.setState({ data }))
}
render() {
const { isLoading } = this.state
if (isLoading) {
return <div>Загрузка</div>
}
return data.map(item => <div key={item.id}>{item.name}</div>)
}
}
const parseUserName = userName => userName.replace(/ (.*)$/, match => match.substr(0, 2) + '.')
parseUserName = userName => {
const [first, last] = userName.split(' ')
return `${first} ${last[0]}.`
}
$(window).scroll(function onScroll() {
if ($(this).scrollTop() > 777) {
$('.div_clone').clone().appendTo('.container2');
$(this).off('scroll', onScroll);
}
});