Node.JS обратный вызов, содержащий массив
// accept a callback function to execute after getting results...
function searchCoords(callback){
var result = result;
connection.query('SELECT * FROM monitoring', function(err, result){
if(err){
console.log(err);
}
// run the callback function, passing the results...
callback({result: result});
});
}
// call like this...
searchCoords(function(resultsObject){
console.log(resultsObject.result)
});
Это мой код, у меня есть анонимная вложенная функция, которая возвращает переменную наружу с помощью функции обратного вызова. Однако возвращаемая переменная (result) - это массив, который мне нужно использовать с googlemaps api в node.js. Как я могу превратить это:
searchCoords(function(resultsObject){
console.log(resultsObject.result)
});
в переменную, которая будет содержать весь массив, чтобы я мог вызвать его из опции маркеров в API
2 ответа
Хорошо, это был бы код прямо сейчас:
function searchCoords(myCoords){
var result = result;
connection.query('SELECT * FROM monitoring', function(err, result){
if(err){
console.log(err);
}
myCoords.push({result: result});
});
}
which i call from main.js like this:
function start() {
var myCoords = {};
myCoords = database.searchCoords(myCoords);
console.log(myCoords);
//otherFunction(myCoords); // This function does stuff with myCoords
}
это близко к решению, которое я пытаюсь получить, но все еще не работает.. вместо этого, консоль показывает
TypeError: Object #<Object> has no method 'push'
Мне нужна простая функция, чтобы взять результат, заданный анонимной вложенной функцией, и превратить его в переменную, которой я могу более легко манипулировать, чтобы я мог добавить его к параметру маркера в API Google Maps API.
Вместо передачи обратного вызова в функцию, почему бы не передать массив, который вы можете добавить?
function start() {
var myCoords = [];
searchCoords(myCoords);
otherFunction(myCoords); // This function does stuff with myCoords
}
function searchCoords(myCoords){
connection.query('SELECT * FROM monitoring', function(err, result){
if(err){
console.log(err);
}
else {
myCoords.push({result: result});
}
});
}