Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Вывод двух обещаний ms sql (https://javascript.ru/forum/node-js-io-js/73544-vyvod-dvukh-obeshhanijj-ms-sql.html)

Artur_Hopf 24.04.2018 15:26

Вывод двух обещаний ms sql
 
Добрый день, столкнулся с такой проблемой. Есть функции запроса к таблице:
var data = async function() {
    const pool = new sql.ConnectionPool(sql_config);
    pool.on('error', err => {
    // ... error handler 
        console.log('sql errors', err);
    });

    try {
        await pool.connect();

        let result1 = await pool.request().query('select * from data');
        return result1;
//        console.log(result1);

        let result2 = await pool.request().query('select * from data2');
        return result2;
//        console.log(result2);

    } catch (err) {         
        return {err: err};   
    } finally {        
        pool.close();    
    }
};

Если я вывожу результат в теле функции в консоль, то выходят оба обещания. Но если я делаю так:
data().then(values => { 
  console.log(values); 
});

То выходит результат только первого обещания result1. Как получить их оба?:-?

Nexus 24.04.2018 15:35

Может как-то так (async/await сами расставьте, я не понимаю принципа их работы)?
var data = async function() {
    const pool = new sql.ConnectionPool(sql_config);
    pool.on('error', err => {
        // ... error handler 
        console.log('sql errors', err);
    });

    try {
        await pool.connect();

        return Promise.all([
            pool.request().query('select * from data'),
            pool.request().query('select * from data2')
        ]);
    } catch (err) {
        return {
            err: err
        };
    } finally {
        pool.close();
    }
};

Aetae 24.04.2018 15:39

Artur_Hopf,
Щито? Return - это всё, конец. После return жизни нет.
Если нужно вернуть несколько значений - возвращайте массив.
return [result1, result2];

Artur_Hopf 24.04.2018 15:41

Nexus,
Спасибо, но не то :yes:
Aetae,
Ну да, спасибо, все просто :yes:


Часовой пояс GMT +3, время: 02:11.