1

为什么此代码返回 $products 为空?如果我在函数内部测试 $products 它确实会显示数据......但是一旦完成,我似乎无法获取数据。

var $products = new Array();
connection.query($sql, function(err, rows, fields) {
    if (err) throw err;
    for(i=0; i< rows.length; i++)
    {
        $products[rows[i].source_identifier] = "xyz";
    }

});
connection.end();

console.log($products); // Shows empty.
4

1 回答 1

2

它不会将其返回为空;没有return声明。问题是操作是异步的。当您的console.log()呼叫运行时,查询尚未完成。

在循环之后将您的console.log()调用移至该回调函数内部。(也用!!!for声明“i” )var

使用涉及此类回调的 API 的全部意义在于应对操作是异步的这一事实。如果它们是同步的,那么设计这样的接口会很奇怪。

于 2012-11-01T22:58:33.447 回答