如何从另一个函数

时间:2016-12-18 06:35:47

标签: javascript node.js database object

我是JavaScript和NodeJS的新手,我需要快速解决这个问题。

      connection(getSQL2)
    .then((table)=> {
        table.forEach(row=> {
            let obj = {
                countryid: row.IdPais,
                country: row.NombrePais
            };
            data.push(obj);
          });

        });

console.log(obj);

当我尝试使用console.log显示对象时,我得到了undefined,这看起来非常明显。但是,让它显示上面创建的Object'obj'是一种简单的方法吗?

更新:为了澄清,此处仅使用console.log作为示例。我需要从外部访问该功能,但我可以。

提前致谢!

3 个答案:

答案 0 :(得分:0)

这里发生了两件事。

1)你正在使用一个承诺和承诺异步解决。好的经验法则是任何以.then(...)结尾的代码都是一个承诺。这意味着它下面的代码可以在promise完成之前执行,如果它在promise完成解析之前读取这些值,它们将被读作undefined

2)您使用let关键字来定义您的变量,这意味着它只会在范围内定义:

row => {
            let obj = {
                countryid: row.IdPais,
                country: row.NombrePais
            };
            data.push(obj);

            // Show the object where it is defined
            console.log(obj);
          }

答案 1 :(得分:0)

你需要这样做: -

 async database()
{

      try {
            const table= await connection(getSQL2);
            if (table!== null)
            {
             table.forEach(row=> {
              let obj = {
                          countryid: row.IdPais,
                          country: row.NombrePais
                        }; 
             console.log('This will resolve the promise',obj);
            }
            else 
            {
             //anything needed 
            }
          } 
            catch (error) 
           {
                       // Error retrieving data
           }
}

asyncawait是并行使用的关键字。在获取数据之前,await关键字不允许控件关闭。

答案 2 :(得分:0)

您可以创建global variable,并将该值分配给该函数内的该变量。

然后,您还可以在函数外部访问变量obj

var temp;//declare a global variable here.
connection(getSQL2)
.then((table)=> {
    table.forEach(row=> {
        let obj = {
            countryid: row.IdPais,
            country: row.NombrePais
        };
        data.push(obj);
        temp = obj;//assign value to global variable here
      });

    });

console.log(temp);//you can access the 'obj' using temp

希望这会对你有所帮助。