首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在node.js中使用geo.find()时未及时获得响应

在node.js中使用geo.find()时未及时获得响应
EN

Stack Overflow用户
提问于 2019-09-26 19:23:27
回答 1查看 39关注 0票数 0

我已经尝试从下面的代码中获得响应:

代码语言:javascript
复制
  let latlongdata;
  if (userInfo.address != "" && userInfo.country != "") {
    let add = userInfo.address + "," + userInfo.country;
    geo.find(add, function(err, res) {
      latlongdata = res[0].location.lat;
      console.log("Inside output", res[0].location.lat); // Got response
    });
    console.log("Outside output", getletlong); // No response
  }
}

在“内部输出”上我得到了响应,在“外部输出”上我没有得到响应。

我也试过使用async await,下面是代码:

代码语言:javascript
复制
if (userInfo.address != "" && userInfo.country != "") {
  add = userInfo.address + "," + userInfo.country;
  [err, data] = await to(geo.find(add));

  console.log("output", data);
  console.log("error", err);
} 

最后,我在使用setTimeOut()时得到了响应

代码语言:javascript
复制
let latlongdata;
if (userInfo.address != "" && userInfo.country != "") {
  add = userInfo.address + "," + userInfo.country;
  geo.find(add, function(err, res) {
    if (res) {
      userInfo.latitude = res[0].location.lat;
    }
  });
}
userInfo.role_id = 2;
setTimeout(async () => {
  [err, user] = await to(User.create(userInfo));
}, 300);

但我认为这不是正确的方法,而且我认为这不会在所有情况下都适用,请任何人告诉我在前两种方法中我做错了什么。

我使用.:- "google-geocoder":"^0.2.1“

EN

回答 1

Stack Overflow用户

发布于 2019-09-26 20:19:56

我做了一些研究和开发,找到了下面的解决方案

代码语言:javascript
复制
let add = userInfo.address + "," + userInfo.country;
return new Promise((resolve, reject) => {
  geo.find(
    "India",
    (err, res) => {
      if (res) {
        resolve(res);
      }
      if (err) {
        reject(err);
      }
    },
    err => {
      reject(err);
    }
  );
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58115747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档