Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать задержку для fetch() в node js?

Screamer Ученик (121), на голосовании 10 месяцев назад
Всем привет, сегодня сделал код, который читает html страницу из гугл переводчика, и потом создает файл этой страницы уже на компе. И код в приницпе работает корректно, но к сожалению, когда я открываю страницу, там вместо страницы с нужным переводом страница, где написано"getting translation". И я понимаю почему так: fetch() мнгновенно считывает данные страницы, и поэтому переводчик не успевает выдать нужную информацию.
Вопрос: как заставить fetch() немного подождать, прежде чем считывать данные?. Вот код:
 import fetch from 'node-fetch';  
import fs from 'fs'

function googleTranslate() {
fetch(`https://translate.google.com/?sl=ru&tl=de&text=привет`)
.then( res => res.text())
.then(data => {
fs.writeFile("google.html", data, function(error){
if(error){
return console.log(error);
}
console.log("Файл успешно записан");
});
})
googleTranslate()
Голосование за лучший ответ
Natalya Dragunova Гуру (3480) 11 месяцев назад
Использовать функцию setTimeout():

JavaScript
function googleTranslate() {
fetch(` https://translate.google.com/?sl=ru&tl=de&text=привет` )
.then(res => res.text())
.then(data => {
setTimeout(() => {
fs.writeFile("google.html", data, function(error) {
if (error) {
return console.log(error);
}
console.log("Файл успешно записан");
});
}, 1000); // Задержка 1 секунда
});
}

googleTranslate();

В этом коде мы используем функцию setTimeout(), чтобы задержать выполнение кода на 1 секунду.
ScreamerУченик (121) 11 месяцев назад
В данном случае просто код выполняется позже, а нужно, чтобы загрузка данных произошла позже чем прогрузилась страница
Natalya Dragunova Гуру (3480) Screamer, Попробуйте JavaScript document.addEventListener("DOMContentLoaded", function() { googleTranslate(); }); Событие DOMContentLoaded срабатывает, когда DOM-дерево страницы полностью построено, но CSS ещё не применён.
asd asd Ученик (116) 11 месяцев назад
на скачанной странице выполняется js клиентский, который ходит на api для перевода. в nodejs это никак не провернешь. может тебе просто на специальное api сходить для перевода?
Похожие вопросы