我是Nodejs和Express的初学者。 我需要调用一个函数,执行后需要继续响应。在此过程中使用了 promise (承诺),但它无法正常工作。 我的代码是
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
};
我正在调用 getArea 函数内的 saveZone 函数。需要等待响应,然后确定while循环是否需要退出。提到了很多关于stackoverflow的问题,但是我还是不能。请帮助我解决这个问题
答案 0 :(得分:0)
您的响应将在承诺被解决之前得到返回,如果您只希望在承诺解决之后才需要响应,则必须等待承诺才能返回响应。请在下面找到代码:
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"
});
});
}
}
希望这会有所帮助!