如何获取循环外的循环值。 我解释了我的问题:
我有一个循环。在此循环中,我提出了几个请求。我希望每个请求都检索变量的值,然后在循环末尾显示所有内容。
这是我的代码的示例示例:
var log = [];
for (var i = 0; i < result.length; i++){
validateExcelJson(result[i], function(id) {
if(result[i].EMAIL != "") {
var query = "SELECT id as ID from Table_users where DELETED = 0 and LOWER(AES_DECRYPT(EMAIL, '"+cryptoKey+"')) = LOWER('" + result[i].EMAIL + "');";
var data = result[i];
store.action = "excel Valid";
log.push(store)
console.log("test")
connection.query(query, function (error, results1, fields) {
console.log("test 1")
if (error) throw error;
if (results1.length > 0)
{
store.state = "update user";
log.push(store)
}
// user create
else
{
store.state = "create user";
log.push(store)
}
});
}
});
}
console.log(log)
这就是我得到的:
test
test
test
test
[ { action: 'excel Valid' },
{ action: 'excel Valid' },
{ action: 'excel Valid' },
{ action: 'excel Valid' },
{ action: 'excel Valid' } ]
test 1
test 1
不幸的是我没有商店值(store.state =“创建用户” / store.state =“更新用户”)。 我想获得的是:
[ { action: 'excel Valid', state: 'update user' },
{ action: 'excel Valid', state: 'update user' },
{ action: 'excel Valid', state: 'create user' },
{ action: 'excel Valid', state: 'create user' },
{ action: 'excel Valid', state: 'create user' } ]
我该怎么办?我认为这与异步方法有关。如果是这样,如何使同步? (带着诺言?我承认这对我来说很模糊)
答案 0 :(得分:0)
首先,您似乎两次填充了阵列
store.action = "excel Valid";
log.push(store)
以及稍后在您的查询回调中
if (results1.length > 0)
{
store.state = "update user";
log.push(store)
}
// user create
else
{
store.state = "create user";
log.push(store)
}
根据此,您应该有一个这样的var日志:
[ { action: 'excel Valid' },
{ action: 'excel Valid' },
{ action: 'excel Valid' },
{ action: 'excel Valid' },
{ action: 'excel Valid' }
{ action: 'update user' }
{ action: 'update user' }
{ action: 'create user' }
{ action: 'create user' }
{ action: 'create user' } ]
但是没有,所以让我认为回调没有启动或没有返回预期的格式或值,所以我们可以看到查询响应吗?