Я вызвал then () для обещания TypeScript, но оно все еще ожидает рассмотрения Почему это? Как я могу получить это решить? - PullRequest
0 голосов
/ 25 июня 2019

Вот скрипт index.ts, который я запускаю (основываясь на том, что я нашел в reddit):

const path = require("path");
const sql = require("mssql");
const config = require(path.resolve("./config.json"));

let db1;

const connect = () => {
    return new Promise((resolve, reject) => {
        db1 = new sql.ConnectionPool(config.db, err => {
            if (err) {
                console.error("Connection failed.", err);
                reject(err);
            } else {
                console.log("Database pool #1 connected.");
                resolve();
            }
        });
    });
};

const selectProjects = async (name) => {
    const query = `
        select * from [Time].ProjectData where [Name] like concat('%', concat(@name, '%'))`;

    const request = new sql.Request(db1);
    const result = await request
        .input("name", name)
        .query(query);

    return result.recordset;
};

module.exports = {
    connect,
    selectProjects
};

connect().then(function() {
    console.log(selectProjects('General'));
}).catch(function(err) {
    console.log(err);
});

Когда я запускаю скрипт, используя node index (после его компиляции, конечно), яполучите это в консоли:

Database pool #1 connected.
Promise { <pending> }

И тогда скрипт зависнет.

1 Ответ

0 голосов
/ 25 июня 2019

Очевидно, ключевое слово await создает неявное обещание;Мне пришлось изменить последний вызов функции на:

connect().then(function() {
    selectProjects('General').then(function(data) {
        console.log(data);      
    });
}).catch(function(err) {
    console.log(err);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...