Блок захвата node.js не запускается, как ожидалось в ожидании - PullRequest
2 голосов
/ 03 апреля 2019

Мой процесс узла вышел после регистрациипопасться сюда?Было бы лучше предоставить обработчик отклонения в улове обещания?

Спасибо, Брент

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Вы смешиваете стандартную обработку обещаний с async/await стилем обработки обещаний. Вы должны попытаться использовать один или другой, но не оба. Использование обоих методов одновременно не ограничено, но это, безусловно, добавляет путаницы.

Вот как должна выглядеть обработка обещаний в стиле async/await:

async function verifyJWT(jwt: string): Promise<any> {
    try {
        return await rp({
            uri: ...,
            method: 'POST',
            json: {
                ...
            }
        });
    } catch (err) {
        console.error(`verifyJWT: err`, err);
        return {
            authInfo: {}
        };
    }
}

Вот как должна выглядеть стандартная обработка обещаний:

function verifyJWT(jwt: string): Promise<any> {
    return rp({
        uri: ...,
        method: 'POST',
        json: {
            ...
        }
    }).catch((err: any) => {
        console.error(`verifyJWT: err`, err);
        return {
            authInfo: {}
        };
    });
}
0 голосов
/ 03 апреля 2019

Вы не используете async await, поскольку его следует использовать

async await позволяет коду ждать ответа на обещание и затем переходить к следующему шагу.Любая ошибка, возвращаемая конечной точкой отдыха, перехватывается блоком catch.

Я разместил пример кода ниже, чтобы показать, как async await будет работать с promise

var rp = require('request-promise');

var myfun = async ()=>{
    let returnValue = null;
    try{
        let response = await rp("http://localhost:3000/getdata");
        console.log("ajax success");
        returnValue = response;
    }
    catch(err){
        console.log("ajax error ",err.message)
        returnValue = err.message;
    }
    return returnValue;
}

Примечание , если вы хотите вернуть какие-либо данныеиз функции async, тогда вызывающая функция также должна быть async, и при вызове должна использоваться await.

Подробнее о async await

...