在节点js中的函数外部访问时,变量的值变为空

时间:2013-07-31 16:59:23

标签: javascript json node.js function coding-style

我有以下代码:

for(work.elements中的var index)         {             var arr = [];             var resourceIdentifiers = {};             var elementinfo = {};             var metadataModified = {};

        elementinfo = workload.elements[index];


        arr[index] = workload.elements[index].uri;
        if(workload.elements[index].parameters.imageUri)
        {
            arr.push(workload.elements[index].parameters.imageUri);
        }
        resourceIdentifiers = arr.join(',');
        console.log('uri' + resourceIdentifiers);

        // connects with mysql and fetch data
        mysql.elementlevelpricing(resourceIdentifiers, function(result){

        elementlevelpricingSummary = JSON.stringify(result,null,2);
        console.log('resultin' + elementlevelpricingSummary);

        });

        console.log('resultout' + JSON.stringify(elementlevelpricingSummary,null,2))

    }

当在被调用函数mysql.elementlevelpricing()之外访问时,变量elementlevelpricingSummary的值变为空{}。

1 个答案:

答案 0 :(得分:2)

传递给mysql.elementlevelpricing的函数是一个异步回调函数,因此它实际上是在它下面的console.log行之后运行的。您需要在回调本身中执行任何需要数据的操作。