javascript在调用函数时使用函数的响应

时间:2014-06-26 04:26:49

标签: javascript node.js geocode

我已经得到了节点地理编码器的一个基本示例,但是我无法得到响应以进入调用函数

    var address = userUpdates.address + " " + userUpdates.city + ", " + userUpdates.state + " " + userUpdates.zip;

   geocoder.geocode(address)
        .then(function(res) {
              console.log(res);
        })
        .catch(function(err) {
             console.log(err);
       });

console.log生成正确的JSON

[ 
  { 
    latitude: 35,
    longitude: -78.5,
    country: 'United States',
    city: 'Clayton',
    state: 'North Carolina',
    stateCode: 'NC',
    zipcode: '27520',
    streetName: 'Main St',
    streetNumber: '100',
    countryCode: 'US' 
   }
 ]

但是我无法将res分配给将在geocoder.geocode函数之外保留的任何内容

3 个答案:

答案 0 :(得分:0)

您是否尝试在geocoder.geocode函数之外创建一个全局变量来保存值?

   var globalRes = null;
   geocoder.geocode(address)
        .then(function(res) {
              globalRes = res;
              console.log(res);
        })
        .catch(function(err) {
             console.log(err);
       });

答案 1 :(得分:0)

我认为你应该能够做到这样的事情: -

var response = null;
geocoder.geocode(address)
    .then(function(res) {
          response = res;
          console.log(res);
    })

答案 2 :(得分:0)

欢迎来到回调世界。

这是一个简化的代码示例,可以帮助您入门。

function myBigFunction() {
  // Here is part 1:
  console.log("I am part 1");

  // Now, call something async and wait for the callback
  myAsyncFunction(function (result) {
    console.log("I am part 2, with the results from myAyncFunction");
  });

  function myAsyncFunction(callback) {
    var returnValue = "This is returned";

    window.setTimeout(function () {
      // Call the callback and make myBigFunction pick back up.
      callback(returnValue);
    }, 250);

  }

}
myBigFunction();

因此,在您的示例中,您需要类似的内容:

function doGeoCoder(callback) {
   geocoder.geocode(address)
        .then(function(res) {
              callback(res);
              console.log(res);
        })
        .catch(function(err) {
             console.log(err);
       });
}

doGeoCoder(function(res) {
  console.log("I'm in the calling function's callback with");
  console.log(res);
});