синхронизация вызовов node.js - PullRequest
0 голосов
/ 02 сентября 2018

Я пишу свое первое «настоящее» лямбда-приложение AWS, и мне нужно синхронизировать пару вызовов. Похоже, не существует «синхронизирующих» версий методов, которые я вызываю.

В частности, я хочу позвонить в Dynamo, а затем использовать данные, проанализированные из JSON, для выполнения http-запроса.

После того, как я его настроил, вот мой рабочий динамовский звонок ...

dynamoDb.get(params, function(err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        url = parse(data);
        console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
    }
});

Затем я вызываю запрос http, используя этот URL ...

http.get(url,function(res){
    res.on('error', function(err){
        console.log(err);
    });

    res.on('data',function(d){
        console.log("received more chunks");
        chunks += d;
    });

    res.on('end',function(){
        console.log("http request complete");
    })
}

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

Есть идеи, как синхронизировать эти два?

1 Ответ

0 голосов
/ 02 сентября 2018

Не обращая внимания на асинхронное / ожидание на данный момент, вы пробовали:

dynamoDb.get(params, function(err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        url = parse(data);
        console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
        http.get(url,function(res) {
            res.on('error', function(err){
                console.log(err);
            });

            res.on('data',function(d){
                console.log("received more chunks");
                chunks += d;
            });

            res.on('end',function(){
                console.log("http request complete");
            });
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...