const geocode = (address, callback) => {
const url = `https://api.mapbox.com/geocoding/v5/mapbox.places/${address}.json?access_token=pk.eyJ1IjoibWVya3VyMTIzIiwiYSI6ImNrYjVndDk3bjBvNGEyeW16cHlid2txZ3YifQ.NGOWOq0yq0wvkhzDzjnUpQ&limit=1`;
request({ url, json: true }, (error, response) => {
const data = response.body;
if (error) {
callback('Unable to connect to the Geo API', null);
} else if (data.message === 'Not Found' || data.features.length === 0) {
callback('Location not found', null);
} else {
callback(null, {
longitude: data.features[0].center[0],
latitude: data.features[0].center[1],
location: data.features[0].place_name,
});
}
});
};
[伙计们,我还有关于回调函数的最后一个问题。在上面的代码中,Web API完成后立即调用了回调函数,但是为什么这样做有效,而不是使用return语句代替回调函数,例如:
return {
longitude: data.features[0].center[0],
latitude: data.features[0].center[1],
location: data.features[0].place_name,
}
那么为什么仅在WEB API完成时才调用回调函数,而返回函数却被立即调用,因此不起作用,但是为什么呢?返回不是也像函数一样吗?
主要问题是应该返回哪里?