关于回调函数的最后一个问题

问题描述 投票:-1回答:1
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完成时才调用回调函数,而返回函数却被立即调用,因此不起作用,但是为什么呢?返回不是也像函数一样吗?

javascript node.js callback
1个回答
0
投票

主要问题是应该返回哪里?

© www.soinside.com 2019 - 2024. All rights reserved.