Не получен ответ вовремя при использовании geo.find () в node.js - PullRequest
0 голосов
/ 26 сентября 2019

Я попытался получить ответ из кода ниже: -

  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, ниже приведен код: -

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 ()

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"

1 Ответ

0 голосов
/ 26 сентября 2019

Я провел несколько НИОКР и нашел следующее решение

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);
    }
  );
});
...