Я новичок в Nodejs и выражаю. Мне нужно вызвать функцию, и после ее выполнения необходимо выполнить ответ. Б обещание для этого процесса, но это не будет работать. Мой код
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, но все же я не могу. Пожалуйста, помогите мне решить эту проблему.
Ваш ответ вернется, прежде чем даже обещание будет разрешено, вам придется ждать обещания вернуть ответ, если вы хотите ответа только после разрешения обещания. Вы найдете следующий код:
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"
});
});
}
}
Надеюсь это поможет !!
while
цикла до возвращения ответа и после некоторых условий возврата верно. после этого только я могу использовать res.json
async
await
функцию или вы должны поставитьres.json
внутриthen
функцияsaveZone
.