Выполнить код после ответа на вызов функции в узле js - PullRequest
0 голосов
/ 13 октября 2018

Я новичок в нодейсе и экспрессе.Мне нужно вызвать функцию и после ее выполнения необходимо продолжить ответ.Использовал обещание для этого процесса, но он не будет работать.Мой код

var NodeGeocoder = require('node-geocoder');
const Promise = require('bluebird');
var geocoder = NodeGeocoder(options);

function getArea(req, res) {

   let row=1;
   let col=1;
   let startingLat = req.body.starting_lat;
   let startingLng = req.body.starting_lng;
   let distance = req.body.distance;
   var resp = false;
   while(resp !=true){ 
     let input = [];
     input.lat = startingLat;
     input.lng = startingLng;
     input.distance = distance;
     input.row = row;
     input.col = col;
     saveZone(input).then(function(responsse,err)  {                
                if(responsse){
                    //some code 
                    row++;                   
                }

            }).catch(function (err) {                    
                console.log('error',err);                    
            });

    }
    res.json({
            status: 200,
            message: "success"
        });

}

function saveZone(input, callback) {

    return new Promise((resolve, reject) => {
      // some code      
      resolve(result);
    }
}

/**
Export all methods
*/
module.exports = {
  getArea: getArea,
  saveZone:saveZone
};

Я вызываю saveZone внутри функции getArea .Нужно дождаться ответа и затем определить, нужно ли выйти из цикла while.Направлено много вопросов по stackoverflow, но все же я не могу. Пожалуйста, помогите мне решить эту проблему

1 Ответ

0 голосов
/ 13 октября 2018

Ваш ответ будет возвращен еще до того, как обещание будет выполнено, вам придется ждать, пока обещание вернет ответ, если вы хотите получить ответ только после разрешения обещания.Пожалуйста, найдите код ниже:

function getArea(req, res) {
      // ... your code
     saveZone(input).then(function(responsse,err)  {                
                if(responsse){
                     res.json({
                        status: 200,
                        message: "success"
                     });               
                }

            }).catch(function (err) {                    
                res.json({
                        status: 500,
                        message: "error"
                     }); 
            });

    }

}

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...