Народ! )
Кто нибудь может обьяснить почему при вызове вот такого кода:
console.time('test');
var pgp = require('pg-promise')(/*options*/);
var cn = {
host: 'localhost', // server name or IP address;
port: 5432,
database: 'trading_database_eur_usd',
user: 'postgres',
password: '7256'
};
var db = pgp(cn); // database instance;
// select and return user name from id:
var promise = new Promise(function(resolve, reject) {
db.any('SELECT * FROM eur_usd WHERE primary_key = 4623209;')
.then(user => {
resolve(user);
})
.catch(error => {
reject(console.log(error)); // print the error;
});
});
module.exports = {
db: promise
.then(
result => {
// первая функция-обработчик - запустится при вызове resolve
result; // result - аргумент resolve
console.log(result);
},
error => {
// вторая функция - запустится при вызове reject
console.log(error); // error - аргумент reject
}
)
};
console.timeEnd('test');
В консоли выводится результат:
"test: 103.301ms
[ { ticket: 'EURUSD',
year_month_day: '20030505',
hour_min_sec: '030000',
open_price: '1.12161',
high_price: '1.12209',
low_price: '1.12161',
close_price: '1.12209',
volume: 561,
primary_key: 4623209 } ]"
Но!
Если анализировать код через дебаггер - то получается противоположенный(как по мне) итог:

Вопрос:
Почему это проиcходит?
P.S. Если вызвать вышеописанный код(без консоли лог) из другой страницы:
const http = require('http');
const port = 2000;
const m = require("../database/database.js");
const requestHandler = (request, response) => {
response.writeHead(200);
console.log(request.method);
console.log(request.headers);
console.log(request.url);
response.write('hi');
response.end();
};
const server = http.createServer(requestHandler);
server.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err)
}
console.log(m);
});
То вывод будет следующим:
{ db: Promise { <pending> } }
Конкретно на этих 3-х выводах(2 консоли + 1 дебаггер) я совсем запутался в плане понимания работы методов промисов - почему это происходит именно таким образом.
Если перефразировать:
То можно ли не меняя эти 2 страницы кода кардинально - заставить все таки вывести из второй страницы результат который по идее должен отдавать промис?
(т.е. то что выводит в первом примере консоль лог - мне необходимо получить на второй странице и например вывести это в консоль лог уже там.)
pending, а так как состояниеpending, никакого значения быть не может. – Grundy Nov 11 '18 at 15:58