请帮我整理下面的代码 -
people.nearby({latitude: 43.646838, longitude: -79.403723}, 5000, function(err, people){
if(err) console.error(err)
else console.log('people nearby:', people)
})
places.nearby({latitude: 43.646838, longitude: -79.403723}, 5000, function(err, places){
if(err) console.error(err)
else console.log('places nearby:', places)
})
我希望在第二个括号关闭后})
答案 0 :(得分:0)
是的,您可以使用全局对象一次访问两者
var mergedObject = {};
people.nearby({latitude: 43.646838, longitude: -79.403723}, 5000, function(err, people){
if(err) console.error(err)
else {
mergedObject['people'] = people;
console.log('people nearby:', people);
}
})
places.nearby({latitude: 43.646838, longitude: -79.403723}, 5000, function(err, places){
if(err) console.error(err)
else {
console.log('places nearby:', places);
mergedObject['places'] = places;
}
})
答案 1 :(得分:0)
personGeoLocation = {};
people.nearby({latitude: 43.646838, longitude: -79.403723}, 5000, function(err, people){
if(err) console.error(err)
else personGeoLocation.person = people;
})
places.nearby({latitude: 43.646838, longitude: -79.403723}, 5000, function(err, places){
if(err) console.error(err)
else personGeoLocation.places = places;
})
答案 2 :(得分:0)
您可以使用javascript closures来完成该操作。您使用var
定义的任何变量都可用于内部结构。您可以定义外部var并从回调内部写入。
另一方面,您可能遇到的实际问题是如果people#nearby
是异步的,则在您显示的块之后数据将不可用,因此您需要同步两者,例如功能:
var globalPeople = null;
var globalPlaces = null;
function checkWeHaveBoth() {
if (globalPeople && globalPlaces)
doSometing(globalPeople, globalPlaces)
}
people.nearby({latitude: 43.646838, longitude: -79.403723}, 5000, function(err, people){
if(err) console.error(err)
else {
globalPeople = people;
checkWeHaveBoth();
}
})
places.nearby({latitude: 43.646838, longitude: -79.403723}, 5000, function(err, places){
if(err) console.error(err)
else {
globalPlaces = places;
checkWeHaveBoth();
}
})
现在你可以写doSomething()
知道当两个结果都可用时它会被调用。
nearby
将带有位置的对象数组传递回调,因此您可以像处理任何其他数组一样处理它:
globalPeople[0].latitude
或者遍历它:
globalPeople.forEach(...)
例如,只显示它:
function doSomething() {
console.log(globalPeople);
console.log(globalPlaces);
}