Как я могу получить данные из разных областей? - PullRequest
0 голосов
/ 17 января 2019

Я работаю с запросом AWS и хочу, чтобы возвращаемое значение было доступно за пределами функции. Как видите, у меня есть функция запроса, а внутри - оператор if else. Я хочу, чтобы значение «success» было доступно вне этой функции.

docClient.query(params, function(err, data) {
    if (err) {
    console.error("Unable to read item. Error JSON:", JSON.stringify(err,
    null, 2));
    } else {
    console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
    var success = data.Items[0].hash_key;
    return success;
    }
});

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Вы можете просто объявить что-то в глобальной области видимости, как сказал markmoxx.

Но поскольку это асинхронный вызов, я полагаю, у вас возникли проблемы с этой переменной, установленной во времени.

Я рекомендую функцию обратного вызова.

let awsFunc = function( params, cb )
{
    docClient.query(params, function(err, data) {
        if (err) {
            console.error("Unable to read item. Error JSON:", JSON.stringify(err,
    null, 2));
            cb(false);
        } else {
            console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
            var success = data.Items[0].hash_key;
            cb(success);
        }
    });
}

Тогда вы можете, в другом месте, позвонить:

awsFunc( params, function(success)
{
    console.log("How'd it go? " + success);
}
0 голосов
/ 17 января 2019

Объявите переменную вне области действия функции, затем просто измените ее в функции:

let success = '';

docClient.query(params, function(err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", JSON.stringify(err,
        null, 2));
    } else {
        console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
        success = data.Items[0].hash_key;
    }
});
...