Три проблемы:
1 - temp и response.body находятся в пределах вашей функции fetch () и поэтому не могут использоваться снаружи.
2 - ваша обработка асинхронных операций неверна. Хотя setInterval будет задерживать выборку на 10 секунд, запись в текстовый файл все равно будет выполняться немедленно.
3 - вы используете метод записи асинхронного файла в конце файла. IIRC программа прекратит работу до того, как завершится.
Наивным решением было бы создать переменную вне выборки для хранения значения, запустить выборку, а затем задержать операцию записи на 10 секунд.
Однако не рекомендуется ждать произвольное количество времени для завершения асинхронной операции, прежде чем продолжить.
Если вы хотите использовать ES2017 / ES8, я предлагаю следующий код:
const got = require('got');
const fs = require('fs');
async function fetch() {
const response = await got('https://www.google.com');
return response.body;
};
fetch().then(body => fs.writeFileSync('./demo3.txt', body));
(PS! Я удалил опцию {json: true} из got, поскольку google.com, похоже, возвращает html, насколько я могу судить. Не уверен, важно ли это для всего, что вы пытаетесь сделать.)
Если вы не знакомы с синтаксисом:
async - объявляет асинхронную операцию. Использовать его как Promise (как сделано в конце файла) или Observable просто.
await - указывает программе прекратить выполнение кода до тех пор, пока не прекратится асинхронная операция в той же строке. В этом случае операция ожидает ответа от google.com
writeFileSync - изменено это значение с записи, чтобы убедиться, что процессор ожидает завершения процесса перед завершением. Это может или не может быть необходимым в зависимости от того, при каких обстоятельствах вы запускаете эту программу.