【发布时间】:2016-12-03 20:59:53
【问题描述】:
我在 NodeJS Express 中定义了一个路由。
路由多次调用一个函数(返回一个promise)。从这些 Promises 返回的值被添加到一个数组中,然后使用 res.json() 将其发送回客户端。
我面临的问题是,当 Promises 得到解决时, res.json() 会执行,因为它不等待 Promises 返回。我认为需要某种链接机制,但不知道该怎么做。
下面是我的代码
app.get('/markers', function(req, res) {
var markers = [];
var marker1 = {"id": 1, "name": "London"};
// Get the lat and lng based on the address
geocoding(marker1.name).then(function(geocode) {
marker1.lat = geocode[0].latitude;
marker1.lng = geocode[0].longitude;
markers.push(marker1);
}, function(error) {
console.log(error);
})
var marker2 = {"id": 2, "name": "Chicago" };
geocoding(marker2.name).then(function(geocode) {
marker2.lat = geocode[0].latitude;
marker2.lng = geocode[0].longitude;
markers.push(marker2);
}, function(error) {
console.log(error);
})
var marker3 = {"id": 3, "name": "Munich" };
geocoding(marker3.name).then(function(geocode) {
marker3.lat = geocode[0].latitude;
marker3.lng = geocode[0].longitude;
markers.push(marker3);
}, function(error) {
console.log(error);
})
// return the lat and lng array to the client
res.json(markers);
})
如何确保'res.json(markers);'在所有三个 Promise 都解决后执行。
【问题讨论】:
标签: javascript json node.js express