Вы не возвращаете ни одного обещания из функции loadpictures
, поэтому вы не можете использовать оператор then
в своей главной.
Довольно просто вернуть второе обещание, которое вы используете с async/await
:
const loadpictures = async () => {
let pool = await sql.connect(config);
let req = pool
.request()
.query('SELECT Top 20 PhotoURL As src, PostURL As link from Valley_Photos FOR JSON PATH')
req.then((result) => {
//console.dir(result);
sql.close();
return result['result'].typeOf();
}).catch(err => {
console.log(err)
sql.close();
})
return req;
}
loadpictures()
.then(result => console.log(results))
.catch( err => ErrorHandler(err) );
С другой стороны, использование только обещаний является более многословным, потому что вы должны вернуть новое обещание, которое разрешается с результатом и отклоняется с ошибкой:
const loadpictures = () => {
return new Promise((resolve, reject) => {
sql.connect(config).then(pool => {
return pool.request()
.query('SELECT Top 20 PhotoURL As src, PostURL As link from Valley_Photos FOR JSON PATH')
}).then((result) => {
//console.dir(result);
sql.close();
resolve(result)
}).catch(err => {
console.log(err)
sql.close();
reject(err);
})
}
}
loadpictures()
.then(result => console.log(results))
.catch( err => ErrorHandler(err) );