Прежде чем перейти к запросу, объект проблем определен, внутри запроса проблем он не определен. Я попробовал решение, упомянутое на сообщениях того же типа, но это не сработало. Комментарии в коде объясняют проблему далее.Как использовать объект асинхронно в Javascript?
var createIssues = function createIssues(rows, wrap) {
var issues = [];
for (var i = 0; i < rows.length; i++) {
// Processing code redacted
issues.push({
id : rows[i].id,
// Other field redacted
});
// ISSUES OBJECT CORRECT HERE
console.log(JSON.stringify(issues[i]))
// Query comments for individual post
connection.query(
"SELECT C.id, C.elementID, C.googleID, C.time, C.body FROM comments C WHERE elementID = ? AND approved = 1", issues[i].id,
function (err, rows_comments) {
// ISSUES OBJECT UNDEFINED HERE
console.log(JSON.stringify(issues[i]))
// More code redacted
}
)
}
return issues;
}
Я попытался передать его в качестве функции, подобно тому, как я нашел в объяснениях в Интернете, но теперь он говорит «TypeError: не определено не является функцией»
var createIssues = function createIssues(rows, wrap) {
var issues = []; // Create issues array
// Loop throug every issue that was
// returned by the SQL query.
for (var i = 0; i < rows.length; i++) {
// Redacted processing code
issues.push({
id : rows[i].id,
// Redacted extra fields
});
(function(issues) {
connection.query(
"SELECT C.id, C.elementID, C.googleID, C.time, C.body FROM comments C WHERE elementID = ? AND approved = 1", issues[i].id,
function (err, rows_comments) {
// Can't access issues here, undefined
}
)
})(issues);
}
return issues;
}
Проблемы в том, 'я> rows.length' к тому времени запрос завершен – levi
Что значит? Как это произойдет? – Connorelsea
'i == rows.length' фактически – Hacketo