@ivanxpru
Начинающий верстальщик

Как использовать promise для данного кода?

var xml_file = fs.readFileSync('xml/jp/eshop_jp.xml', 'utf8');

xml2js(xml_file, function (err, result) {
    fs.writeFile('json/jp/eshop_jp.json', JSON.stringify(result,"",2), (err) => {
        if (err) {
          console.error(err);
          return;
         };
    });   
});

var eshop_jp = JSON.parse(fs.readFileSync('json/jp/eshop_jp.json', 'utf8'));

В моём коде последняя строчка выполяется прежде чем, выполнится xml2js. Судя по всему мне нужно использовать промисы, но я не знаю как обернуть свой код в промисы, что будет resolve, что reject, как вызывать следующую часть кода и прочее... Пожалуйста, покажите, как обернуть код в промисы.
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
ProjectSoft
@ProjectSoft
Front-end && Back-end разработчик
Типа такого
function readXmlFIle(file, jsonfile) {
	return new Promise(function(resolve, reject){
		var xml_file = fs.readFileSync(file, 'utf8');
		xml2js(xml_file, function (err, result) {
			if(err){
				reject(err);
				return;
			}
			fs.writeFile(jsonfile, JSON.stringify(result,"",2), function(error){
				if (error) {
					reject(error);
					return;
				};
				resolve();
			});   
		});
	});
}

readXmlFIle('xml/jp/eshop_jp.xml', 'json/jp/eshop_jp.json').then(function(){
	var eshop_jp = JSON.parse(fs.readFileSync('json/jp/eshop_jp.json', 'utf8'));
}).catch(function(err){
	console.log(err)
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы