#javascript #node.js
#javascript #node.js
Вопрос:
У меня есть «clients.txt » файл, в котором у меня есть список электронных писем. Я пытаюсь запустить программу для отправки электронных писем, в которой я выбрал несколько электронных писем для использования из файла, в этом случае число равно 2. После того, как я использую два письма, которые я хочу перезаписать «clients.txt » без них. Проблема в том, что когда я пытаюсь запустить код только один раз, все работает! но если я создаю цикл, что-то не так. С нетерпением ждем любой помощи от вас, ребята. Спасибо! Я добавляю приведенный ниже код. PS: Извините за мой плохой английский!
function readEmails(){
const fs = require('fs');
clients_list = fs.readFileSync('clients.txt', 'utf8').split('n');
let filtered = clients_list.filter(function (el) {
return el != null amp;amp; el != '';
});
return filtered
}
function dump_array(arr, file){
let fs = require('fs');
let file = fs.createWriteStream(file);
file.on('error', function(err) { /* error handling */ });
arr.forEach(function(v) { file.write(v 'n'); });
file.end();
}
while_var = 0;
while (while_var < 2){
while_var ;
let all_clients = readEmails();
let selected_clients = [];
if (all_clients.length > 0){
selected_clients = all_clients.splice(0,2);
dump_array(all_clients, 'clients.txt');
console.log(selected_clients);
}else{
console.log('No more clients')
}
}
Ответ №1:
const fs = require('fs');
function readEmails(){
const clients_list = fs.readFileSync('clients.txt', 'utf8').split('n');
const filtered = clients_list
// clear false, 0 and undefined too
.filter(el => !!el)
// remove extra spaces and r symbols
.map(el => el.trim());
return filtered;
}
function dump_array(arr, file){
// Here you need sync method.
fs.writeFileSync(file, arr.join('n'));
// And here was 'already declared' error in orginal code
}
let while_var = 0;
while (while_var < 2){
let all_clients = readEmails();
let selected_clients = [];
if (all_clients.length > 0){
selected_clients = all_clients.splice(0,2);
dump_array(all_clients, 'clients.txt');
console.log(selected_clients);
}else{
console.log('No more clients')
}
}
Комментарии:
1. В каждом цикле я хочу взять двух клиентов из
clients.txt
и перезаписать файл без них. Поэтому мне нужно поместитьlet all_clients = readEmails();
внутри цикла, потому что каждый раз будет другойclients.txt
контент. Код, который вы предоставляете, не очень хорош.2. Я хочу, чтобы в каждом цикле было два новых клиента,
let selected_clients = []
и перезаписать `clients.txt — без них.3. @popescuandrei хорошо, я исправлю это сейчас
4. @popescuandrei Я исправил код и проверил его на своей машине, работает нормально