如何从不同的范围检索数据?

时间:2019-01-16 22:11:21

标签: javascript amazon-web-services scope return-value

我正在使用AWS查询,并且希望在函数外部可以访问返回值。如您所见,我有一个查询功能,里面是一个if else语句。我希望在此功能之外可以访问“成功”的值。

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 :(得分:0)

在函数范围之外声明变量,然后在函数中对其进行更改:

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;
    }
});

答案 1 :(得分:0)

您可以在全局范围内声明诸如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);
}