Я новичок в обещаниях, и у меня есть несколько вопросов по этому поводу.
Мне нужно было получить JSON-файл (с информацией о погоде) для моего приложения node.js из URL-адреса, поэтому я создал функцию getJSON()
, которая использует модуль https const https = require('https');
, который «возвращает» файл:
function getJSON(url, resolve) {
https.get(url, function(res) {
let json = '';
res.on('data', function(chunk) { json += chunk; });
res.on('end', function() { resolve(JSON.parse(json)); });
}).on('error', function(err) { console.log(err); });
};
И, как вы можете видеть, он на самом деле не возвращает значение, но разрешает его, потому что я вызываю функцию с обещанием:
function weather() {
let json = new Promise(function(res) {getJSON('https://api.openweathermap.org/data/2.5/weather?APPID=APIKEY&q=City&units=metric', res);})
json.then(function(weatherJSON) {
// and here i can use the file
});
}
Так что это работает, но я чувствую, что это может быть намного лучше, я мог бы оптимизировать это? Могу ли я даже не использовать обещания?
Спасибо!